当前位置:  开发笔记 > 编程语言 > 正文

Apache是​​"无法初始化模块",因为更改PHP配置后模块和PHP的API不匹配

如何解决《Apache是​​"无法初始化模块",因为更改PHP配置后模块和PHP的API不匹配》经验,为你挑选了3个好方法。

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.在此之前一切正常.



1> Pascal MARTI..:

当您更新PHP的版本(特别是从版本XY到版本XZ)时,您还必须更新PHP扩展.


这是因为PHP扩展是用C开发的,并且与PHP的内部结构"接近" - 这意味着,如果这些内部的API发生变化,则必须重新编译扩展,以使用新版本.

而且,在PHP 5.2和PHP 5.3之间,我记得,PHP引擎使用的内部数据结构有一些修改 - 这意味着必须重新编译扩展,以匹配那些新版本的数据结构.


如何更新PHP扩展将取决于您使用的系统.

如果你在Windows上,你可以在.dll这里找到一些扩展:http ://downloads.php.net/pierre/
有关不同版本的更多信息,你可以看看窗口左侧边栏上的内容.php.net.

如果您使用的是Linux,则必须:

检查您的发行版提供的内容

或者使用该pecl命令重新下载相关扩展的源代码,然后重新编译它们.


我试图重新编译PHP和我的所有模块,没有任何工作,但不知何故"梨安装-f pecl/memcache"为我做了诀窍:)无论如何,谢谢你)

2> Bảo Nam..:

只是

pecl uninstall module_name

然后

pecl install module_name


谢谢 - 这对我有用!我试过`pecl upgrade-all`但我想我的模块没有更新的版本所以它没有触发重新编译.

3> Vladimir Laz..:

你的问题在php5-dev包中.我猜你是从旧的linux版本的php5.2到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版本所以我立刻知道我已经解决了问题:)

希望能帮助到你.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有