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

php:mysql_connect()失败,没有错误消息,php,mysql,centos,command-line-interface,Php,Mysql,Centos,Command Line Interface,我正在CentOS 5.6上从命令行运行一个简单的测试脚本,并从安装了PHP包 PHP在所有其他情况下都可以正常运行,但当我点击mysql\u connect()时,它会毫无错误地失败 如果我跑 $ php -m 我不认为MySQL是一个已安装的模块 但是,我在php.ini中添加了extension=mysql.so,并重新启动了 输出“rpm-qa | grep php” php-common-5.3.10-1.w5 php-5.3.10-1.w5 php-cli-5.3.10-1.w5

我正在CentOS 5.6上从命令行运行一个简单的测试脚本,并从安装了PHP包

PHP在所有其他情况下都可以正常运行,但当我点击
mysql\u connect()
时,它会毫无错误地失败

如果我跑

$ php -m
我不认为MySQL是一个已安装的模块

但是,我在php.ini中添加了
extension=mysql.so
,并重新启动了

输出“rpm-qa | grep php”

php-common-5.3.10-1.w5
php-5.3.10-1.w5
php-cli-5.3.10-1.w5
  --> 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.
输出“yum安装php-mysql”

php-common-5.3.10-1.w5
php-5.3.10-1.w5
php-cli-5.3.10-1.w5
  --> 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.
你安装了吗

# yum install php-mysql
(来自您安装的同一个repo
php
from)

编辑:

运行以下命令:

yum --enablerepo=webtatic install php-mysql
这会告诉yum从webstatic存储库(以及系统配置的存储库)获取包。如果要在启用系统的存储库之间进行WebStatic,请运行:

 yum --enablerepo=webtatic install  webtatic-release
你安装了吗

# yum install php-mysql
(来自您安装的同一个repo
php
from)

编辑:

运行以下命令:

yum --enablerepo=webtatic install php-mysql
这会告诉yum从webstatic存储库(以及系统配置的存储库)获取包。如果要在启用系统的存储库之间进行WebStatic,请运行:

 yum --enablerepo=webtatic install  webtatic-release

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

现在提供一些疑难解答帮助:第一步是100%确保mysql正在加载。使用以下内容创建脚本(基于web):

phpinfo()

确认此页面的某个地方有一个块,指示正在加载mysql扩展

无论您在何处测试,都无法确定是否存在错误,在调用mysql\u 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\u connect具有相同凭据的mysql命令从服务器上的命令行作为脚本进行连接。您可能可以正常连接,但凭据不好

如果模块未加载,请尝试准确查找模块所在的位置,并将完整路径放入php.ini中。Yum有时会在php.ini找不到的地方安装东西。在Yum安装结束时,它有时会告诉您使用蛮力查找它的路径,如果没有,请执行以下操作:

cd /
find . -name 'mysql.so'
因此在php.ini中,而不是

extension=mysql.so


祝你好运

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

现在提供一些疑难解答帮助:第一步是100%确保mysql正在加载。使用以下内容创建脚本(基于web):

phpinfo()

确认此页面上的某个地方有一个块指示正在加载mysql扩展

无论您在何处测试,都无法确定是否存在错误,在调用mysql\u 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\u connect具有相同凭据的mysql命令从服务器上的命令行作为脚本进行连接。您可能可以正常连接,但凭据不好

如果模块未加载,请尝试准确查找模块所在的位置,并将完整路径放入php.ini中。Yum有时会在php.ini找不到的地方安装东西。在Yum安装结束时,它有时会告诉您使用蛮力查找它的路径,如果没有,请执行以下操作:

cd /
find . -name 'mysql.so'
因此在php.ini中,而不是

extension=mysql.so


祝你好运

如果您已经安装了yum,那么“yum安装php-mysql”应该可以,如果还没有安装,那么您是如何安装php包的?如果是使用yum安装的,请在命令行上运行,yum将php-mysql安装为rootOk,installed。顺便问一下,有没有办法在不重新启动服务器的情况下重新启动php?通常我可以重新启动apache以查看更改是否生效,但在本例中不能。php不是服务,因此不需要重新启动;当您将php本身作为apache模块安装时,需要重新加载的是apache;但在本例中,您刚刚安装了一个php库,mysql连接应该是开箱即用的(如果您使用了yum,请确保安装了mysql包,只需检查它是否正在运行)。重新启动。还是不走运。获取:致命错误:在第7行的/home/app/index.php中调用未定义的函数mysql_connect(),如果您已经安装了yum,那么“yum安装php-mysql”应该执行此操作,如果尚未安装,您是如何安装php包的?如果是使用yum安装的,请在命令行上运行,yum将php-mysql安装为rootOk,installed。顺便问一下,有没有办法在不重新启动服务器的情况下重新启动php?通常我可以重新启动apache以查看更改是否生效,但在本例中不能。php不是服务,因此不需要重新启动;当您将php本身作为apache模块安装时,需要重新加载的是apache;但是在本例中,您刚刚安装了一个php库,mysql连接应该是开箱即用的(如果您需要我们的帮助,mysql包一定会安装)