Предупреждения после перекомпиляции php (Невозможно загрузить динамическую библиотеку и Невозможно инициализировать модуль) - PullRequest
4 голосов
/ 02 марта 2011

После перекомпиляции php я получаю следующие ошибки при использовании php cli:

PHP Warning:  PHP Startup: imap: Unable to initialize module
Module compiled with module API=20050922
PHP    compiled with module API=20090626
These options need to match
 in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/ldap.so' - /usr/lib/php/modules/ldap.so: undefined symbol: third_arg_force_ref in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/mbstring.so' - /usr/lib/php/modules/mbstring.so: undefined symbol: second_arg_force_ref in Unknown on line 0
PHP Warning:  PHP Startup: mysql: Unable to initialize module
Module compiled with module API=20050922
PHP    compiled with module API=20090626
These options need to match
 in Unknown on line 0
PHP Warning:  PHP Startup: mysqli: Unable to initialize module
Module compiled with module API=20050922
PHP    compiled with module API=20090626
These options need to match
 in Unknown on line 0
PHP Warning:  PHP Startup: PDO: Unable to initialize module
Module compiled with module API=20050922
PHP    compiled with module API=20090626
These options need to match
 in Unknown on line 0
PHP Warning:  PHP Startup: pdo_mysql: Unable to initialize module
Module compiled with module API=20050922
PHP    compiled with module API=20090626
These options need to match
 in Unknown on line 0
PHP Warning:  PHP Startup: pdo_sqlite: Unable to initialize module
Module compiled with module API=20050922
PHP    compiled with module API=20090626
These options need to match
 in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/mapi.so' - /usr/lib/php/modules/mapi.so: undefined symbol: fourth_arg_force_ref in Unknown on line 0

После некоторого поиска в Google я обнаружил, что модули должны быть обновлены, я попытался:

pecl install <modulename>

и

pecl upgrade <modulename>

и

pear install -f pecl/<modulename>

но я получил такие ошибки, как:

configure: error: mysql_query missing!?
ERROR: `/tmp/pear/temp/PDO_MYSQL/configure' failed

Или ошибки типа:

make: *** [sqlite_driver.lo] 
Error 1 ERROR: `make' failed

Есть идеи, как обновить модули?

Если было что-то, что я должен был сделать перед компиляцией, объясните мне, потому что я собираюсь перекомпилировать php на других серверах и хочу узнать решение, прежде чем я снова столкнусь с той же проблемой.

Заранее спасибо.

PS: Моя ОС - Linux (Redhat)

1 Ответ

0 голосов
/ 04 декабря 2012

Похоже, проблема в том, что ваши php и модули API отличаются, например ::

Module compiled with module API=20050922     <----- this
PHP    compiled with module API=20090626     <----- and this should match.

Обычно я устанавливаю расширения, компилируя их из исходного кода, который, кажется, работает намного надежнее.

Вам нужно будет использовать phpize

Например, вот как я могу установить APC:

wget http://pecl.php.net/get/APC-3.1.9.tgz
tar -xvzf APC-3.1.9.tgz
cd APC-3.1.9
phpize
./configure
make
sudo make install

Это должно работать для всех расширений PECL. Теперь у вас есть и другие ошибки ... Я бы предложил сначала просмотреть ваш php.ini и отключить все расширения, а затем включить и исправить одно за другим.

Там также ошибка об mysqli. Если вы используете php> = 5.0.0, то вам нужно перекомпилировать php (с помощью ./configure [....] --with-mysqli), в противном случае вышеприведенная процедура также будет работать для него. .

НТН

...