我从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.
答案 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
祝你好运!