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. до этого все работало нормально.
Ответы
Ответ 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 и все было в порядке