PHP + NGINX环境访问php文件报错’File not found’的原因之一及解决方法
2023-10-27
PHP + NGINX环境访问静态文件(html、js等)正常,但是访问php文件报错’File not found’原因之一:
多半是nginx服务器根目录不正确,而且问题出在$document_root上。
nginx关联PHP的配置文件(.conf),参考如下;
server {
listen 80;
server_name my-test.com;
root /usr/share/nginx/html;
location / {
index index.html index.htm index.php;
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass php_7_2_24:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
必须要注意$document_root的用法,它是一个变量,代表当前配置文件中的root,如此,root要在$document_root外层定义,通常写在server头部。
最常见的错误示例:root仅仅写在 location /内容块中,PHP-FPM无疑是读不到root路径里面的文件,如下:
server {
listen 80;
server_name my-test.com;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
try_files $uri $uri/ =404;
}
当然,也可以不用变量$document_root,直接写明路径也行。
location ~ \.php$ {
fastcgi_pass php_7_2_24:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
除了有点重复,并没什么影响,注意后面如果变动根目录时,里面的两个地方都需要更新哦!
(版权归cpury.com所有,转载请注明出处。)