2011-09-05 70 views
0

我的服务器是centos(CentOS 5.6版(Final))。php,mysqli问题

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

我已经fiollowing代码我的PHP脚本test.php的内部:

$connection = mysqli_init(); 

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

所以当命令行下文件来运行,这是确定的,但在网页, 它返回错误代码“2003”, 和错误消息无法连接到MySQL服务器上XXXXXX

Linux版本是2.6.18-238.19.1.el5xen#1 SMP周五7月15日8点16分59秒 EDT 2011 x86_64的x86_64的x86_64的GNU/Linux的

+0

你如何通过'localhost'或IP /主机名连接到MySQL?另外,是否启用了“skip-network”? –

+0

不同服务器上的mysql服务器,还有,mysql -u xxx -pxxxx -hxxx工作。 – anru

回答

1

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

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

我猜你的Web服务器用户(WWW数据或Apache或其他)可能没有访问套接字文件的权限。尝试从“本地主机”更改为“127.0.0.1”(是的,他们被区别对待),看看你能否连接。

+0

我不是使用本地主机,而是一个真正的远程主机。我发现,如果我使用$ conn = new mysqli($ host,$ user,$ pass,$ db);有效。 – anru

0

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

改变了selinux设置,它现在工作。