我正在尝试在 RHEL5 机器上安装 freetds 和 php-mssql。我已经成功地完成了(似乎是)所有事情。但是,当 PHP 尝试加载模块时出现以下错误:
PHP Warning: PHP Startup: mssql: Unable to initialize module
Module compiled with module API=20090626, debug=0, thread-safety=0
PHP compiled with module API=20050922, debug=0, thread-safety=0
These options need to match
我一直在绞尽脑汁想弄清楚为什么它们是不同的值,但没有成功。
在最近的尝试中,我下载了我正在运行的版本 (php-5.3.8) 的 php 源代码,进入 ext/mssql 文件夹并运行 phpize、configure、make、make install。
我验证了 mssql.so 文件在适当的文件夹中,并且 php 正在尝试加载它。
phpize -v
Configuring for:
PHP Api Version: 20050922
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
最佳答案
RHEL 有一个旧版本的 php (5.1.x),安装较新的 php 版本(例如 5.3.x)意味着一些变化。如果您从非官方存储库安装,您将看到名为 php-* 和 php5-* 的包。拥有这两个版本可能是问题的根源。
看起来您的系统正在访问以前安装的 php 中的一些配置文件。
看看: -/etc/php.d 确保你没有旧版本的元素 - 查看/usr/bin/php-config* ,如果您同时拥有 php-config 和 php-config5,请删除(重命名)/usr/bin/php-config 并创建指向新配置的符号链接(symbolic link):
# mv /usr/bin/php-config /usr/bin/php-config_old
# ln -s /usr/bin/php-config5 /usr/bin/php-config
希望对你有帮助
关于具有错误编译 API 的 PHP 模块(无法初始化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8406743/