Я использую Ubuntu 8.04 на этом сервере. У меня был установлен PHP 5.2 через диспетчер пакетов. Я удалил его, чтобы установить PHP 5.3.1 вручную. Я собрал пакеты вот так
./configure --prefix=/opt/php --with-mysql --with-curl=/usr/bin --with-apxs2=/usr/bin/apxs2
make
make install
Это установило PHP 5.3.1 в / opt / php /
$ php -v
PHP 5.3.1 (cli) (built: Dec 7 2009 10:51:14)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
Однако, когда я пытаюсь запустить Apache, я получаю следующее.
# /etc/init.d/apache2 restart
* Restarting web server apache2
apache2: Syntax error on line 185 of /etc/apache2/apache2.conf:
Syntax error on line 1 of /etc/apache2/mods-enabled/php5.load:
Cannot load /usr/lib/apache2/modules/libphp5.so into server:
/usr/lib/apache2/modules/libphp5.so: undefined symbol: OnUpdateLong
[fail]
Есть идеи, что вызывает эту ошибку? Все ссылки, которые я вижу, относятся к созданию пакетов php5 для php4 и т.п. PHP4 никогда не устанавливался на этом компьютере.
на самом деле то, что сказал Джеймс Хакетт, более или менее сработало для меня.
Моя проблема заключалась в том, что я построил PHP перед Я установил Apache (я собрал PHP из последней версии и установил Apache2 через APT).
Поэтому, когда я обнаружил ошибку, заключающуюся в том, что apache обнаружил неопределенный символ (модуль, который не найден, является произвольным, кстати), я сделал следующее:
make distclean
в источнике php./configure --prefix=/usr/local/php-5.3-svn --with-apxs2=/usr/bin/apxs2
make && make install
и все работало нормально.
Капитан очевидный скрывался от меня, конечно, поскольку, если вы просто переделываете без make distclean && configure, make просто компилирует новые символы, чего явно недостаточно ;-)
У меня была такая же проблема, и я удалил свой исходный каталог php, повторно извлек тарболл, а затем снова скомпилировал, и все работало нормально.
Ранее я устанавливал php в этой системе без apache, а затем я попытался переустановить php из того же исходного каталога с другими настройками конфигурации.
Вы создали php5, но не восстановили связь между apache и php5. Поскольку вы используете mod_php5, это не работает (логично).
Возможно, вы сможете запускать php-скрипт благодаря fastcgi (я предполагаю, что ваш созданный вручную php 5.3.1 в порядке), но в любом случае я рекомендую вам действовать по-другому.
Довольно неприятно создавать программное обеспечение вручную на рабочем сервере. Более того, PHP5 - большая часть программного обеспечения, вам действительно стоит не сделайте это в целях обслуживания и безопасности.
Правильный способ добиться этого, если вам действительно нужна эта версия, - создать резервную копию пакета. (да, упаковка!)
Это потребует немного знаний в области упаковки и времени. Вы можете получить исходники упаковки с: apt-get source php5
при условии, что у вас есть источник deb-src в /etc/apt/sources.list
для тех из вас, кто сталкивается с ошибкой zend_parse_paramater из apache2 при загрузке libphp5.so:
/apache2.conf: синтаксическая ошибка в строке 1 /etc/apache2/mods-enabled/php5.load: невозможно загрузить /usr/lib/apache2/modules/libphp5.so на сервер: / usr / lib / apache2 / modules / libphp5.so: неопределенный символ: zend_parse_parameters
взгляните на вывод ./configure. если вы получили сообщение вроде:
configure: warning: поддерживаемые версии bison для регенерации парсеров Zend / PHP: 1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 (найдено: нет).
попробуйте установить bison: sudo apt-get install bison
затем сделайте distclean, затем ./configure ... затем сделайте затем make -i install
http://www.linuxforums.org/forum/redhat-fedora-linux-help/87975-configuring-php-work-apache.html
Как указано в @zecrazytux, вы установили соответствующие пакеты apache-dev? PHP вполне мог бы построить без них, даже если бы вы сказали ему, где они находятся. Вам нужно посмотреть на вывод ./configure.