PHP 5.3.1 Не визначений символ: Помилка OnUpdateLong при запуску Apache


9

Я запускаю 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 ніколи не був встановлений на цій машині.

Відповіді:


11

насправді те, що сказав Джеймс Хакетт, було більш-менш те, що працювало на мене.

Моєю проблемою було те, що я створив PHP перед тим, як встановити Apache (я створив PHP з останнього магістралі та встановив Apache2 через APT).

Отож, коли я зіткнувся з помилкою, що в апачі зустрічався невизначений символ (модуль, який не знайдено, є довільним btw.), Я зробив наступне:

  1. make distclean на джерело php
  2. ./configure --prefix=/usr/local/php-5.3-svn --with-apxs2=/usr/bin/apxs2
  3. make && make install

і все працювало просто чудово.

Капітан очевидний ховався від мене, звичайно, тому що якщо ви просто переробляєте без distclean & & configure, змушуйте просто компілювати нові символи, яких, очевидно, недостатньо ;-)


3

У мене була ця сама проблема, і я зробив, щоб видалити свій каталог джерел php, повторно витягти тарбол і потім знову скомпілювати, і все працювало нормально.

Раніше я встановив php в цій системі без apache, а потім спробував перевстановити php з того самого каталогу джерел з різними налаштуваннями конфігурації.


1

Ви створили php5, але ви не переобладнали клей між apache та php5. Оскільки ви використовуєте mod_php5, він не працює (логічно).

Можливо, ви зможете запустити php-скрипт завдяки fastcgi (я вважаю, що з вбудованим вручну php 5.3.1 це нормально), але все одно я рекомендую діяти іншим чином.

Дуже противно складати програмне забезпечення вручну на виробничому сервері. Крім того, PHP5 - це велика частина програмного забезпечення, ви дійсно не повинні цього робити з метою обслуговування та безпеки.

Правильний спосіб досягти цього, якщо вам справді потрібна ця версія, - це підтримка пакету. (так, упаковка!)

Це вимагає трохи знань про упаковку та часу. Джерела упаковки можна отримати за apt-get source php5умови: у вас є джерело deb-src в /etc/apt/sources.list


Це не виробничий сервер. Це просто наш сервер розробників, і я намагаюся розібратися, що, якщо що-небудь php 5.3 зламається в нашій системі.
бодотака

1
"Дуже неприємно складати програмне забезпечення вручну на виробничому сервері. Більше того, PHP5 - це велика частина програмного забезпечення, ви дійсно не повинні цього робити з метою обслуговування та безпеки". У більшості дистрибутивів це єдиний спосіб бути в курсі останніх. Наприклад, Ubuntu має лише 5.2.10 як стабільний у своїх сховищах, який був випущений ще в червні 2009 року. Особисто я вважаю, що більше ризику для безпеки використовувати попередні пакети, оскільки в них вбудовано багато зайвих матеріалів, які ви можете не робити потребують і можуть викреслити, якщо ви самі їх побудуєте. Крім того, ви можете бути в курсі останніх.
Енді Шеллам

1

для тих, хто відчуває помилку zend_parse_paramater від apache2, завантажуючи libphp5.so:

/apache2.conf: Помилка синтаксису в рядку 1 /etc/apache2/mods-enabled/php5.load: Неможливо завантажити /usr/lib/apache2/modules/libphp5.so на сервер: / usr / lib / apache2 / module / libphp5.so: не визначений символ: zend_parse_parameters

подивіться на ./configure вихід. якщо ви отримаєте повідомлення про щось подібне до:

конфігурація: попередження: підтримуються версії бізонів для регенерації пардерів 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 встановити

http://www.linuxforums.org/forum/redhat-fedora-linux-help/87975-configuring-php-work-apache.html


Перебудувати zend-аналізатори слід лише тоді, коли ви змінили вихідний код PHP якимось чином. Я ніколи не встановлював зубрів на жодних виробничих серверах і ніколи не мав проблем.
Енді Шелам

0

Як зазначав @zecrazytux, ви встановили відповідні пакети apache-dev? PHP цілком міг побудувати і без них, хоч ви сказали це, де вони були. Вам потрібно подивитися на ./configure вихід.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.