具有错误编译 API 的 PHP 模块(无法初始化)

标签 php sql-server

我正在尝试在 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/

相关文章:

php - 如何从具有两个字段且其中一个在 mysql、php 中具有重复值的单个表中获取结果

php - 如何检查数组中是否存在给定的键或索引?

sql-server - 在 SQL Server 中计算移动范围(无数组)

SQL 汇总总和仅净出负行

sql-server - 将 xml 传输到 SQL Server 的最佳方法?

php - 使用 Drush 时,命令行上的 Apache 服务器变量 ENV 不同

php - PHP 连接出现问题

php - 我如何在 Mootools 中通过 AJAX 发送的数据中转义 '+'?

android - 返回错误响应的 SOAP Web 服务

sql-server - 使用 PROBE 代替索引查找进行索引扫描