访问在nginx和php上被拒绝

使用nginx web服务器和php。 nginx正在工作,我看到'欢迎来到nginx!' 但是当我尝试访问一个php页面时,我得到了“访问被拒绝”的错误。 我也安装了php-fastcgi。

这里是我的nginx默认的conf:

# redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root /usr/share/nginx/html; fastcgi_index index.php; fastcgi_pass unix:/var/run/php5-fpm.sock; include fastcgi_params; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } 

我在/etc/php-fpm.d/www.conf和cgi.fix_pathinfo = 0security.limit_extensions = .php .php3 .php4 .php5 .htmllisten = /var/run/php5-fpm.sock in /等/ PHP5 / FPM / php.ini中

我重新启动了nginx和php5-fpm。

感谢您的帮助。

像这样做,你有你的第二地点

 location / { try_files $uri $uri/ =404; root /path/to/your/www; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } 

这两个参数是魔术酱:

 fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 

请检查您的fastcgi_params文件,并相应地将其更改为这个帖子https://askubuntu.com/questions/164627/nginx-php-fpm-access-denied-error

我通过使用上述方法解决了我的问题。

当nginx和php无法访问文件时,我知道一些可能的情况:

  1. 很可能php-fpm进程是由用户运行的,对相应的.php文件没有读取权限。 这给了普通的错误Access denied.

  2. 对于包含站点文件的root目录, nginx进程没有读取和遍历权限。 这给了403 Forbidden错误。

  3. php-fpm进程不能遍历root目录的绝对路径。 这给File not found错误。

由于作者提到,这个问题只出现在访问php文件时,我会说第一种情况在这里适用。

我相信的情况是, nginx是作为一个用户运行,而php-fpm作为另一个用户,只有php-fpm用户被遗忘给读取权限。