我的环境:
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
所以它会导致权限被拒绝问题....
答案 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