我需要将单个静态URL映射到我在配置文件中使用以下代码的特定PHP文件
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location /reset {
root html/sys;
try_files /index.php /index.php;
fastcgi_pass 127.0.0.1:9000; //PHP server
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
结果=(“未指定输入文件。”)作为响应
如果我将返回(try_files index.html;)并删除php代理,则它将返回html索引页面,此问题仅在尝试返回php页面时出现
答案 0 :(得分:0)
您将文档根目录设置为html/sys
,这是相对于Nginx安装而言的。 PHP-FPM可能不知道如何解决该问题。
使用绝对路径:
root /path/to/html/sys;
或使用$realpath_root
的绝对版本的$document_root
:
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
或使用输入较少的$request_filename
:
fastcgi_param SCRIPT_FILENAME $request_filename;
您应将include fastcgi_params;
放在fastcgi_param
之前,{{1}}放在之前,因为您的参数可能会被该文件中指定的值默默覆盖。