由于模块和PHP的API在更改PHPconfiguration后不匹配,因此Apache“无法初始化模块”
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/
PS。 我已经从PHP 5.2升级到5.3。 在这之前一切正常。
当你更新PHP的版本(特别是从版本XY到版本XZ)时 , 你也必须更新PHP扩展 。
这是因为PHP扩展是用C语言开发的,并且与PHP的内部“接近” – 这意味着,如果这些内部的API改变了,那么必须重新编译扩展来使用新的版本。
而且,在PHP 5.2和PHP 5.3之间,对于我所记得的,PHP引擎使用的内部数据结构已经有了一些修改 – 这意味着扩展必须重新编译,以便匹配那些新版本数据结构。
如何更新您的PHP扩展将取决于您使用的是哪个系统。
如果你在Windows上,你可以在这里find一些扩展名为.dll
的文件: http : //downloads.php.net/pierre/
有关不同版本的更多信息,可以查看windows.php.net左侧的内容。
如果你在Linux上,你必须:
- 检查您的分配提供了什么
- 或者使用
pecl
命令,重新下载相关扩展的来源,然后重新编译它们。
只是
pecl uninstall module_name
然后
pecl install module_name
你的问题在php5-dev包中。 我想你从一个较旧的Linux版本的php5.2到php5.3。 我做了同样的事情,当我设法安装PHP 5.3时,与php5-dev有冲突。 出于某种原因,它不会升级到新版本。 不知道为什么,我不在乎,但是这使得你的扩展与旧的API版本编译,而PHP的C是与较新的API版本。 我做了什么来解决这个问题是:
我用sudo apt-get remove php5-dev
, sudo apt-get remove php5-dev
,然后我运行了sudo apt-get autoremove
来摆脱那些给我带来麻烦的剩菜,之后我再次安装了php5-dev。 sudo apt-get install php5-dev
。
完成之后,我使用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。 在你的php.ini的第428行左右,改变:
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的时候,只要把path传给正确的php-config
工具即可。
就我而言,是的
./configure --with-php-config=/usr/local/zend/bin/php-config
…如果您不确定,请在您的机器上运行一个locate php-config
,并在安装的不同版本中find正确的一个。
希望这有助于未来的人。
PS。 我的默认php-config
被设置为20090926,这是PHP 5.3。 我手动input./configure was
的参数./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
评论这些行composer php安装在我的Windows 10
从PHP 5.5升级到PHP 5.6后,我遇到了类似的问题。 用于编译phalcon扩展的phpize
和php-config
库仍然来自PHP 5.5。 我不得不运行下面的命令:
sudo apt-get install php5.6-dev
会有一个很长的堆栈跟踪,我看到的关键信息是:
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之前,请确保更新你的path($ PS1)指向新的PHP! phpize使用你的环境,如果你的path或环境的其他部分仍然有旧的PHP的痕迹,事情会变得毛茸茸的!
即使在重新编译模块之后,我也会遇到同样的错误。
但我解决了它,你只需要指定你的phpize的绝对path。
这是一个与PHP 5.5的作品。 从这里下载xampp 1.8.3并从这里下载memcache dll
在我的情况下在php.ini
[CLDbg] extension=php_cl_dbg_5_3_VC9.dll clport=6000
我删除了支持不同PHP版本的Codelobster,所以需要更新到:
[CLDbg] ;extension=php_cl_dbg_5_3_VC9.dll ;clport=6000
这个问题刚刚发生在我身上,并且已经通过将memory_limit从32 M增加到64 M来解决。您可以调整php.ini存在的文件的值
findphp.ini,然后select正确的文件,并searchmemory_limit和修改后,您必须重新启动apache /etc/init.d/httpd重新启动
祝一切顺利。
在我的情况下,我用lnmp安装版本5.4.45的PHP。 但也许是因为我在lnmp之后安装了php5-dev(如果你安装了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,一切都很好