Apache – «Невозможно инициализировать модуль» из-за того, что API модуля и PHP не соответствуют после изменения конфигурации 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. до этого все работало нормально.

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

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

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

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

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

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

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

просто

 pecl uninstall module_name 

тогда

 pecl install module_name 

Ваша проблема находится в пакете 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, поэтому я сразу понял, что проблема решена 🙂

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

Возможно, что модули установлены, но ваш 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. Это должно решить проблему.

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

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

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

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

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

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

Я включил эту часть в свой 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

У меня была аналогичная проблема после обновления с 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 

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

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

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

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

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

В моем случае в 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 

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

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

Всего наилучшего.

В моем случае я использовал 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 .
Надеюсь, это полезно.

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

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

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

 ;extension=php_java.dll 

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