我一直在这个问题上花了几个小时,尽pipe与此有关的post数量很多,但我无法解决。 我有一个Fedora 20盒子,Nginx + PHP-FPM,直到今天都工作得相当不错(我猜我重新加载了PHP-fpm.service)。 Nginx提供的静态文件没有问题,但任何PHP文件都会触发错误403。
权限是可以的,Nginx和PHP-fpm在用户“Nginx”下运行:
root 13763 0.0 0.6 490428 24924 ? Ss 15:47 0:00 PHP-fpm: master process (/etc/PHP-fpm.conf) Nginx 13764 0.0 0.1 490428 7296 ? S 15:47 0:00 PHP-fpm: pool www Nginx 13765 0.0 0.1 490428 7296 ? S 15:47 0:00 PHP-fpm: pool www Nginx 13766 0.0 0.1 490428 7296 ? S 15:47 0:00 PHP-fpm: pool www Nginx 13767 0.0 0.1 490428 7296 ? S 15:47 0:00 PHP-fpm: pool www Nginx 13768 0.0 0.1 490428 6848 ? S 15:47 0:00 PHP-fpm: pool www
服务的文件已经被设置为Nginx用户,我甚至结束了chmoding这些文件的尝试,但仍然“访问被拒绝”任何PHP文件。
git能否在本地Windows NTFS机器上保留文件所有者,权限,ACL和文件属性?
Windows服务可以安装另一个Windows服务吗?
作为普通的非root用户的沙箱权限下降权限?
如何复制文件并赋予它们目的地目录的权限
/ proc / self / maps中的“— p”权限是什么意思?
server { listen 80; server_name localhost; root /var/www/html; location ~ .PHP$ { fastcgi_intercept_errors on; try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.PHP; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
PHP-FPM池:
[www] ... listen = 127.0.0.1:9000 user = Nginx group = Nginx ...
对于版本:
PHP-5.5.11 (当然也是PHP-fpm-5.5.11 )
Nginx的-1.4.7
FastCGI sent in stderr: "Access to the script '/var/www/html' has been denied (see security.limit_extensions)" while reading response header from upstream,client: xxx.xxx.xxx.xxx,server: localhost,request: "GET /index.PHP HTTP/1.1",upstream: "fastcgi://127.0.0.1:9000",host: "xxx.xxx.xxx.xxx"
并确切security.limit_extensions是正确的,设置为: security.limit_extensions = .PHP 。
关于path权限,可以遍历/ var / www / html 。 我错过了什么?
图像不从本地主机服务器显示
PHP mkdir或chmod 0777不起作用
如何在应用程序文件夹上configuration写入XML文档的权限
file upload在asp.net权限错误(访问被拒绝到pathx)
以下是一些可能的解决方案
在你的PHP-fpm http://www.conf中设置security.limit_extensions为.PHP或者.PHP5或者其他适合你的环境的东西。 对于某些用户,完全删除所有值或将其设置为FALSE是使其工作的唯一方法。
在你的Nginx配置文件中设置fastcgi_pass到你的套接字地址(例如unix:/var/run/PHP-fpm/PHP-fpm.sock; )而不是你的服务器地址和端口。
检查你的SCRIPT_FILENAME fastcgi参数,并根据你的文件的位置进行设置。
在你的Nginx配置文件中包含fastcgi_split_path_info ^(.+.PHP)(/.+)$; 在所有其他fastcgi参数定义的位置块。
在你的PHP.ini中设置cgi.fix_pathinfo为1
请注意,上面的解决方案(设置cgi.fix_pathinfo为1 )是一个可怕的想法。 请参阅https://nealpoole.com/blog/2011/04/setting-up-PHP-fastcgi-and-Nginx-dont-trust-the-tutorials-check-your-configuration/以获得良好的概述。
这个问题很可能是依赖于PATH_INFO的应用程序。 为PHP启用访问日志记录,以获取有关如何调用应用程序的更多信息,以帮助您调试此问题。
再一次,只是可以肯定的 – 接受的解决方案是一个可怕的想法,并可能会让你的网站被黑客入侵。
fpm预启动PHP5,所以重新启动Nginx以应用更改是不够的。
稍后的参考资料:在你的网站的conf中尝试添加:fastcgi_param PATH_INFO $ fastcgi_path_info; 另外看看SELinux正在做什么。 要关闭它:setenforce 0但是,然后确定什么脚本是问题,并把它放回setenforce 1
如果您的vhost文档根目录中没有index.PHP ,也会发生这种情况。
仔细检查你的Nginx配置中的www_root参数。 然后仔细检查你正在尝试打的PHP文件是否在那里。
在我的情况下,我错误键入虚拟主机的根路径,所以指向一个空目录,产生一个403。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。