php7.1
1 server { 2 listen 80; 3 server_name www.tp5.com; 4 access_log /home/wwwroot/access.log combined; 5 error_log /home/wwwroot/error.log; 6 7 set $root /home/wwwroot/default/mytp5/tp5/public; 8 9 location ~ \.php { 10 fastcgi_pass unix:/tmp/php-cgi.sock; 11 fastcgi_split_path_info ^((?U).+.php)(/?.+)$; 12 fastcgi_param PATH_INFO $fastcgi_path_info; 13 fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; 14 fastcgi_param SCRIPT_FILENAME $root$fastcgi_script_name; 15 include fastcgi_params; 16 } 17 location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ 18 { 19 root $root; 20 } 21 location / { 22 root $root; 23 index index.html index.php; 24 if ( -f $request_filename) { 25 break; 26 } 27 if ( !-e $request_filename) { 28 rewrite ^(.*)$ /index.php/$1 last; 29 break; 30 } 31 } 32 33 34 }
如果出现了错误
1 FastCGI sent in stderr: "Access to the script ‘/usr/local/nginx/html‘ has been denied (see security.limit_extensions)" while reading response header from upstream, client: 192.168.124.1, server: www.tp5.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi.sock:", host: "www.tp5.com"
- 在你php-fpm配置文件
php-fpm.conf
中设置security.limit_extensions
为.php
或.php5
,或者其他任何与你环境一致的后缀名。 对于开发环境下的一些用户来说, 完全移除所有security.limit_extensions
的值或设置为FALSE
,能够保证可以正常工作. - 在你的nginx配置文件中设置
fastcgi_pass
为你的socket
地址(e.g. unix:/var/run/php-fpm/php-fpm.sock;), 替代ip地址:端口
这种方式(127.0.0.1:9000). - 检查你的
SCRIPT_FILENAME
,fastcgi_param
并根据你文件的地址来设置它们. - 在你的nginx配置文件中包含有
fastcgi_split_path_info ^(.+\.php)(/.+)$
; 则所有其他的对应fastcgi参数也都应该在location块中定义;具体可参考phalcon的nginx官方配置 - 在你的
php.ini
配置文件中,设置cgi.fix_pathinfo=1
我就是因为第五个原因,cgi.fix_pathinfo
默认没有设置为1
,而造成页面总是显示Access denied
原文地址:https://www.cnblogs.com/matengfei123/p/9036541.html
时间: 2024-10-11 05:53:19