php,mysqli问题

时间:2011-09-05 23:22:16

标签: php mysqli

我的服务器是centos(CentOS 5.6版(最终版))。

我对mysqli有一个奇怪的问题。 mysqli连接仅适用于命令行脚本,而不适用于网页脚本。

我的php脚本test.php中有fiollowing代码:

$connection = mysqli_init();

mysqli_real_connect($connection,$host,$user,$pass,$database);
var_dump(mysqli_connect_errno(), mysqli_connect_error());

所以当在命令行下运行该文件时,没关系,但在网页中, 它返回错误代码“2003”, 和错误消息无法连接到xxxxxx上的MySQL服务器

linux版本是2.6.18-238.19.1.el5xen#1 SMP Fri Jul 15 08:16:59 EDT 2011 x86_64 x86_64 x86_64 GNU / Linux

2 个答案:

答案 0 :(得分:1)

这只是一种“直觉”的猜测;坦率地说,你没有提供足够的信息来实际使用。

我的猜测是你连接到“localhost”作为你的主机名。在Linux中,这将尝试使用unix(基于文件)套接字。当您从命令行运行时,您可能以与从Web服务器运行它时不同的用户身份运行。

我猜你的网络服务器用户(www-data或apache或其他东西)可能没有访问套接字文件的权限。尝试从“localhost”更改为“127.0.0.1”(是的,它们的处理方式不同),看看是否可以连接。

答案 1 :(得分:0)

哦,centos使用Selinux,默认情况下不允许apache连接到远程主机。 这就是为什么它不能在网页上工作的原因。

更改了selinux设置,现在正在使用。