如何为PHPize设置PHP Api版本

我正在升级我的服务器上的PHP,但我遇到了与phpize和编译外部模块的问题。 phpize -v报告:

Configuring for: PHP Api Version: 20041225 Zend Module Api No: 20090115 Zend Extension Api No: 220090115 

但在我的testing服务器(我试图复制),我得到这个:

 Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 

我正在运行debian挤压,从实验回购拉动PHP 5.3.0-2包。 两台服务器的区别在于第一台服务器上已经有了php的老版本,testing服务器从一开始就安装了php 5.3.0-2。

我试图从第一台服务器上卸载所有的PHP软件包(使用–purge去除所有的configuration文件)并重新安装5.3新鲜的,但我仍然有同样的问题。 帮帮我!

解决这个我自己 – 安装php5-dev 5.3给你一个phpize和一个phpize5。 phpize5拥有所有最新的API。 我仍然很想知道如何获得默认的phpize,但至less,没有符号链接。

怎么样:

phpize是一个简单的shell脚本,你可以看到它在做什么。 当用--version调用时,它--version 。 为了简洁起见,我已经略去了一些。

 prefix='/usr/lib/php5' includedir="`eval echo ${prefix}/include`/php" SED="/bin/sed" .. PHP_API_VERSION=`grep '#define PHP_API_VERSION' $includedir/main/php.h|$SED 's/#define PHP_API_VERSION//'` ZEND_MODULE_API_NO=`grep '#define ZEND_MODULE_API_NO' $includedir/Zend/zend_modules.h|$SED 's/#define ZEND_MODULE_API_NO//'` ZEND_EXTENSION_API_NO=`grep '#define ZEND_EXTENSION_API_NO' $includedir/Zend/zend_extensions.h|$SED 's/#define ZEND_EXTENSION_API_NO//'` .. echo "PHP Api Version: "$PHP_API_VERSION echo "Zend Module Api No: "$ZEND_MODULE_API_NO echo "Zend Extension Api No: "$ZEND_EXTENSION_API_NO 

编译PHP时,顶部的prefixvariables是硬集。 /usr/lib/php5是我的机器安装位置。 所有的phpize都是在前缀处查看安装的头文件。 我想你的phpize5有一个完全不同的path到phpize

为什么:

也许你的安装想区分新旧版本,所以重新命名了其中一个。 这可能是以前安装在同一台机器上的4.x版本的结果。

这应该是一个评论,但我找不到评论链接。 这实际上是对上一个答案的回应。

那么我是否认为phpize文件是为您的系统定制的,作为编译PHP的副作用? 也许我使用的Mac端口过程拉到一个预编译的二进制文件,这就是为什么我没有phpize5。 我真的不知道这是如何工作的。 但是你所暗示的是,如果你对phpize进行攻击,并且指向一个更新的PHP安装,那么它将拉出正确的API#来匹配? 确认有很多东西需要改变! 我宁愿有一个程序,它会问你关于什么东西的问题,所以你肯定会改变一切需要改变的东西。