当我通过nginx使用mysql_connet但命令行正常运行时,权限被拒绝

时间:2015-02-18 15:38:34

标签: php mysql nginx centos mariadb

我的环境:

CentOS 6.6

带有mod_security,naxsi,ngx_pagespeed模块的Nginx 1.7.10

PHP 5.6.5

Mariadb 10.0.16

SeLinux关闭

setenforce 0

我的测试代码:

<?php
/*
** Connect to database:
*/

// connect to the database
$con = mysql_connect('localhost','root','my pass')
       or die('Could not connect to the server! ' . mysql_error());

var_dump($con);
exit;

那就是它。

当我使用firefox运行此脚本时

结果是&#34;无法连接到服务器!权限被拒绝&#34;

nginx error.log是

2015/02/18 23:26:33 [错误] 1532#0:* 68 stC输入的FastCGI:&#34; PHP消息:PHP警告:mysql_connect():/ var / www / nginx中的权限被拒绝第9行&#34; /aa.php从上游读取响应头时,客户端:客户端IP,服务器:localhost,请求:&#34; GET /test-sql-injection.php HTTP / 1.1&#34;,上游:&#34; fastcgi:// unix :/var/run/php-fpm.sock:&#34;,host:&#34; server ip&#34;

但是当我使用命令行来运行这个脚本时

php aa.php

结果是

resource(5) of type (mysql link)

连接到玛丽亚数据库是成功的......

mysql.sock文件权限是

在/ tmp

lrwxrwxrwx. 1 mysql  mysql    25 2015-02-18 21:20 mysql.sock -> /var/lib/mysql/mysql.sock

在/ var / lib / mysql

srwxrwxrwx.  1 mysql mysql        0 2015-02-18 23:03 mysql.sock

所有命令都以root身份运行

当我使用其他用户运行php命令时

仍然会收到Permission denied错误消息!

哪个文件的权限错了?

==

/ var / lib / mysql dir权限是700

所以它会导致权限被拒绝问题....

2 个答案:

答案 0 :(得分:0)

php-cgi和php-cli没有使用相同的php.ini文件。 比较两个文件,也许你有差异

答案 1 :(得分:-1)

检查套接字文件的完整路径 socket的路径中的每个目录都必须具有webserver用户的eXecute权限 例如/ var /或/ var / lib /或/ var / lib / mysql /必须有chmod 711才能有chmod 700。

请注意,制作更宽松的chmod可能会导致安全问题。我建议您将mysql.sock移动到默认情况下可通过世界访问的目录,例如/ tmp