php-cgi 显示 mysql 模块但抛出“调用未定义函数 mysql_connect()”错误

php-cgi 显示 mysql 模块但抛出“调用未定义函数 mysql_connect()”错误

我已经使用 --with-mysqli=mysqlnd 选项在 Mac OS X 10.6 上从源代码编译了 PHP 5.3.6。php -m 和 php-cgi -m 的输出都显示 mysqli 和 mysqlnd 模块。当我使用常规 php 二进制文件运行包含 mysql_connect(...) 的简单测试 PHP 文件时,它可以正常连接。当我使用带有 php-cgi 的相同测试 PHP 文件时,我得到:

PHP 致命错误:在 /Users/chris/test2.php 第 2 行调用未定义的函数 mysql_connect()

我已经确认 php.ini 中的 MySQL 套接字信息正确,并确保 php-cgi 使用 -c 参数使用该文件。使用常规 mysql 命令行界面时,MySQL 工作正常,并且显然与常规 PHP 配合使用。php-cgi 中的 phpinfo() 显示 mysqli 和 mysqlnd 库的正确版本。

我需要在这个特定环境中以 CGI 配置运行 PHP,因此我确实需要 php-cgi 才能工作。目前我并不担心 Apache2/nginx/etc - 只是让 CGI 工作。对于我缺少什么,有什么建议吗?

答案1

您已编译了 PHP 并支持mysqli扩展(mysqli_* 函数)...但错误清楚地表明你正在使用mysql_connect()函数(不带“i”,属于mysql扩展)。这是两个不同的扩展:mysqli代表“MySQL 改进版”,与较旧且功能较少的扩展相比,更适合使用mysql

您有 2 个选择:

1)更新代码以使用mysqli_*函数

2)再次编译 PHP 并添加mysql扩展支持(不要忘记稍后在 php.ini 中启用它)

附言无论如何,我建议您使用 PDO 来满足您的数据库需求(当然,如果可以的话)。

答案2

也许你可以尝试这个:

在文件 php.ini 中已经取消注释扩展 mysql.so? 或者尝试使用这个邮政

我希望它能解决你的问题。

相关内容