使用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 = 0
中security.limit_extensions = .php .php3 .php4 .php5 .html
和listen = /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无法访问文件时,我知道一些可能的情况:
很可能php-fpm
进程是由用户运行的,对相应的.php文件没有读取权限。 这给了普通的错误Access denied.
对于包含站点文件的root
目录, nginx
进程没有读取和遍历权限。 这给了403 Forbidden
错误。
php-fpm
进程不能遍历root
目录的绝对路径。 这给File not found
错误。
由于作者提到,这个问题只出现在访问php文件时,我会说第一种情况在这里适用。
我相信的情况是, nginx
是作为一个用户运行,而php-fpm
作为另一个用户,只有php-fpm
用户被遗忘给读取权限。