Подтвердить что ты не робот

Apache - "Невозможно инициализировать модуль" из-за того, что модуль и PHP API не соответствуют после изменения конфигурации PHP

php -v дает это

PHP Warning:  PHP Startup: memcache: Unable to initialize module
Module compiled with module API=20060613
PHP    compiled with module API=20090626
These options need to match in Unknown on line 0
PHP Warning:  PHP Startup: memcache: Unable to initialize module
Module compiled with module API=20060613
PHP    compiled with module API=20090626
These options need to match in Unknown on line 0
bogus test name tests/

пс. я обновился с php 5.2 до 5.3. до этого все работало нормально.

4b9b3361

Ответ 1

Когда вы обновляете версию PHP (особенно при переходе с версии X.Y на версию X.Z), вы также должны обновлять расширения PHP.


Это связано с тем, что расширения PHP развиваются в C и "близки" к внутренним компонентам PHP - это означает, что если API-интерфейсы этих внутренних компонентов меняются, расширение необходимо перекомпилировать для использования новых версий.

И, между PHP 5.2 и PHP 5.3, для того, что я помню, во внутренних структурах данных, используемых механизмом PHP, были некоторые изменения, что означает, что расширения должны быть повторно скомпилированы, чтобы соответствовать этому новому версия этих структур данных.


Как обновить расширения PHP будет зависеть от того, какую систему вы используете.

Если вы находитесь в окнах, вы можете найти .dll для некоторых расширений здесь: http://downloads.php.net/pierre/
Для получения дополнительной информации о различных версиях, вы можете посмотреть, что сказано на левой панели windows.php.net.

Если вы находитесь в Linux, вы должны либо:

  • Проверьте, что предлагает ваш дистрибутив.
  • Или используйте команду pecl, чтобы повторно загрузить источники соответствующих расширений и перекомпилировать их.

Ответ 2

просто

pecl uninstall module_name

затем

pecl install module_name

Ответ 3

Ваша проблема в пакете php5-dev. Я думаю, вы перешли с php5.2 на более старую версию linux на php5.3. Я сделал то же самое, и когда мне удалось установить php 5.3, возник конфликт с php5-dev. По какой-то причине он не обновляется до новой версии. Dunno почему это и мне все равно, однако это заставляет ваше расширение скомпилировать более старую версию API, в то время как php ofc - с новой версией api. Я решил решить эту проблему:

Я удалил php5-dev с помощью sudo apt-get remove php5-dev, тогда я побежал sudo apt-get autoremove, чтобы избавиться от остатков, которые причинили мне эту проблему, и после этого я только что установил php5-dev. sudo apt-get install php5-dev.

Как только это было сделано, я удалил memcache с помощью sudo pecl uninstall memcache и снова установил его sudo pecl install memcache. Теперь и модуль, и php имели такую ​​же версию api, что и я сразу понял, что проблема решена:)

Надеюсь, что это поможет.

Ответ 4

Возможно, что модули установлены, но ваш PHP.ini все еще указывает на старый каталог.

Проверьте содержимое /usr/lib/php/extensions. В моем распоряжении было два каталога: no-debug-non-zts-20060613 и no-debug-non-zts-20060613. По линии 428 вашего php.ini измените:

extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613"

к

extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20090626"

Затем перезапустите apache. Это должно решить проблему.

Ответ 5

Я долгое время боролся с этой проблемой и узнал, что при запуске configure просто передайте ей путь к правильному инструменту php-config.

В моем случае это было

./configure --with-php-config=/usr/local/zend/bin/php-config 

... Если вы не уверены, запустите locate php-config на вашем компьютере и найдите правильный вариант среди разных версий.

Надеюсь, это поможет кому-то в будущем.

PS. Мой default php-config был установлен в 20090926, который является PHP 5.3. Тот, который я вручную ввел как параметр для ./configure was для PHP 5.4 (2010...)

Ответ 6

Я включил эту часть в свой php.ini

 extension=php_memcache.dll
    [Memcache]
    memcache.allow_failover = 1
    memcache.max_failover_attempts=20
    memcache.chunk_size =8192
    memcache.default_port = 11211

После комментирования этих строк композитор был установлен в моих окнах 10

Ответ 7

У меня была аналогичная проблема после обновления с PHP 5.5 до PHP 5.6. Библиотеки phpize и php-config, используемые для компиляции расширения phalcon, по-прежнему являются версиями PHP 5.5. Мне нужно было выполнить следующую команду:

sudo apt-get install php5.6-dev

Будет длинная stacktrace, ключевая информация, которую я видел, такова:

update-alternatives: using /usr/bin/php-config5.6 to provide /usr/bin/php-config (php-config) in auto mode
update-alternatives: using /usr/bin/phpize5.6 to provide /usr/bin/phpize (phpize) in auto mode

Я надеюсь, что это поможет кому-то.

Ответ 8

У меня была бы такая же ошибка даже после перекомпиляции модулей.

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

Ответ 9

Прежде чем приступить к phpize, обязательно обновите свой путь ($ PS1), чтобы указать на новый PHP! phpize использует вашу среду, и если у вас все еще есть остатки старого PHP на вашем пути или в других частях среды, все будет выглядеть волосатым!

Ответ 10

Вот, что работает с php 5.5. Загрузите xampp 1.8.3 из здесь и скачайте dll emcache из здесь

Ответ 11

В моем случае в php.ini

[CLDbg]
extension=php_cl_dbg_5_3_VC9.dll
clport=6000

Я удалил Codelobster, который поддерживает другую версию PHP, поэтому вам нужно обновить:

[CLDbg]
;extension=php_cl_dbg_5_3_VC9.dll
;clport=6000

Ответ 12

Эта проблема только что произошла со мной и была решена просто путем увеличения memory_limit от 32 М до 64 М Вы можете настроить значение в файле, где php.ini существует

найдите php.ini затем выберите нужный файл и выполните поиск memory_limit и после его модификации вы должны перезагрузить apache /etc/init.d/httpd restart

Все самое лучшее.

Ответ 13

В моем случае я использовал lnmp для установки php с версией 5.4.45. Но, возможно, потому, что я установил php5-dev после lnmp (который, как я полагаю, не нужен, если вы установили lnmp), мои phpize и php-config указывают на более старые версии, чем на php.
Я решил это, изменив мягкую ссылку /etc/alternatives/phpize и /etc/alternatives/php-config на /usr/local/php/bin/phpize и /usr/local/php/bin/php-config.
Надеюсь, это поможет.

Ответ 14

Что сработало для меня было просто сделать следующее:

откройте файл php.ini.

Под заголовком DYNAMIC EXTENSIONS прокомментируйте следующую строку как

;extension=php_java.dll

Перезапуск Apache и все было в порядке