最近配置nginx服务器,设置fastcgi_param出现access denied

配置nginx服务器,用了一个二级域名来处理一些api相关的工作,期间设置了fastcgi_param参数,导致访问前台网页出现access denied。

首先需要排查问题,因为fastcgi_param设置之前是可以访问的,设置后不可访问说明网站程序目录和文件权限是没有问题的。那问题肯定出现在nginx的一些文件属性上。

  1. location  ~ \.php$ {
  2.         try_files $uri /index.php?$args;
  3.         fastcgi_param     PATH_INFO $fastcgi_path_info;
  4.         fastcgi_param     PATH_TRANSLATED $document_root$fastcgi_path_info;
  5.         fastcgi_param     SCRIPT_FILENAME $document_root$fastcgi_script_name;
  6.         fastcgi_pass unix:/dev/shm/php-cgi.sock;
  7.         fastcgi_index index.php;
  8.         fastcgi_split_path_info ^(.+\.php)(/.+)$;
  9.         fastcgi_intercept_errors off;
  10.         include fastcgi_params;
  11.         #include fastcgi.conf;
  12. }

百思不得其解,就谷歌了一些,其中发现这样的一条解决方式:

罪魁祸首是这条配置:

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;如果把它删了,一切都工作得很好。这位国外码哥也是和我一样,找了几百次的所有文件权限都没有解决问题。而最终我读到Nginx配置中,如果加入了这一条设置,必须把php.ini中cgi.fix_pathinfo设置为1。PHP使用默认值是0。

修改后终于解决问题,页面正常工作,不得不说细节磨死人啊!

最近配置nginx服务器,设置fastcgi_param出现access denied

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: