首先对我的英语不好表示抱歉,我尝试尽可能清楚地解释我的问题。
我的一台服务器出现了一个奇怪的问题,
我运行一个 Plesk 12 服务器,
我有 2 个 php 版本。
/usr/bin 中的默认 php 版本 5.3
一切正常,我可以在这里安装模块,PHPIZE 版本是:
/usr/bin/phpize -v
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
那里没有问题。
我在 /opt/php55 中有第二个 PHP 版本
这里我无法编译任何模块:
/opt/php5.5/usr/bin/phpize -v
Configuring for:
PHP Api Version: 20121113
Zend Module Api No: 20121212
Zend Extension Api No: 220121212
我跑
/opt/php5.5/usr/bin/phpize ./configure 制作 进行安装
一如既往
但是模块安装在错误的路径中。
我在 phpize 上编辑所有路径:
# Variable declaration
prefix='/opt/php5.5/usr'
datarootdir='/opt/php5.5/usr/share'
exec_prefix="`eval echo /opt/php5.5/usr`"
phpdir="`eval echo /opt/php5.5/usr/lib64/php`/build"
includedir="`eval echo /opt/php5.5/usr/include`/php"
builddir="`pwd`"
因此,我可以为 php5.3 编译模块,但不能为 php 5.5 编译模块,如果我尝试将模块复制到 php5.5 模块目录,我会收到错误:
PHP Warning: PHP Startup: memcache: Unable to initialize module
Module compiled with module API=20090626
PHP compiled with module API=20121212
我尝试手动编辑 php 5.3 的 php.h zend_module.h zend_extension.h,但没有帮助,api 编号总是 API=20090626
答案1
为每个 PHP 版本构建扩展时,请按照以下步骤操作:
对于 5.3
/usr/bin/phpize
./configure
make
make install
对于 5.5
/opt/php5.5/usr/bin/phpize ./configure --with-php-config=/opt/php5.5/usr/bin/php-config 制作 进行安装
请编辑为正确的路径。以上只是示例。