php:mysql_connect()失败,没有错误消息

时间:2012-02-19 14:36:22

标签: php mysql centos command-line-interface

我从CentOS 5.6上的命令行运行一个简单的测试脚本,其中包含从PHP 5.3 on CentOS/RHEL 5.6.安装的PHP包

PHP在所有其他情况下运行良好,但是当我点击mysql_connect()时,它会失败而没有错误。

如果我跑

$ php -m

我没有将MySQL视为已安装的模块。

但是我已将extension=mysql.so添加到我的php.ini并重新启动。

输出'rpm -qa | grep php'

php-common-5.3.10-1.w5
php-5.3.10-1.w5
php-cli-5.3.10-1.w5

输出'yum install php-mysql'

  --> Missing Dependency: php-common = 5.1.6-27.el5_7.5 is needed by package php-mysql-5.1.6-27.el5_7.5.x86_64 (updates)
php-pdo-5.1.6-27.el5_7.5.x86_64 from updates has depsolving problems
  --> Missing Dependency: php-common = 5.1.6-27.el5_7.5 is needed by package php-pdo-5.1.6-27.el5_7.5.x86_64 (updates)
Error: Missing Dependency: php-common = 5.1.6-27.el5_7.5 is needed by package php-pdo-5.1.6-27.el5_7.5.x86_64 (updates)
Error: Missing Dependency: php-common = 5.1.6-27.el5_7.5 is needed by package php-mysql-5.1.6-27.el5_7.5.x86_64 (updates)
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.

2 个答案:

答案 0 :(得分:6)

 I am not seeing MySQL as an installed module.

你安装了吗?

# yum install php-mysql

(来自您安装php的同一个仓库)。

编辑:

运行这个:

yum --enablerepo=webtatic install php-mysql

这告诉yum从webtatic存储库获取包(除了系统配置的存储库)。如果您希望在启用系统的存储库中使用webtatic,请运行:

 yum --enablerepo=webtatic install  webtatic-release

答案 1 :(得分:0)

首先,一些建议:停止使用mysql库并使用PDO或至少使用mysqli库。

现在进行一些故障排除帮助:第一步是100%确定mysql正在加载。使用以下命令创建脚本(基于Web)

的phpinfo();

确认此页面上某处有一个块,表明正在加载mysql扩展名。

无论您在哪里测试都不确定错误,在调用mysql_connect之前添加以下行:

ini_set('display_errors', 1);
ini_set('log_errors', 1); 
error_reporting(E_ALL | E_STRICT);

这将确保您不会在连接之前抑制其他位置的错误。有些框架有时会这样做。

如果确实正在加载模块并且添加了错误记录代码,则仍然无法获得有效错误。我尝试在命令行php脚本中连接。查看php.ini文件以查看“error_log”设置为什么。这是它将记录到的默认日志 - 有时基于http的设置会覆盖日志记录,因此即使出现错误,您也看不到或找不到它们。命令行php脚本将其解决了这个问题。

最后但并非最不重要的是,您始终可以将连接字符串发布到此帖子。尝试使用mysql命令从服务器上的命令行连接作为脚本,使用与mysql_connect相同的凭据。你可能能够很好地连接,但凭证不好。

如果模块未加载,请尝试找到模块所在的确切位置,并将完整路径放入php.ini中。百胜有时会安装东西,而不是php.ini正在寻找的东西。在Yum安装结束时,它有时会告诉你路径,如果没有,用蛮力找到它,执行此操作:

cd /
find . -name 'mysql.so'

所以在php.ini中,而不是

extension=mysql.so

extension=/path/to/found/mysql.so
祝你好运!