gpt4 book ai didi

NGINX - 没有指定输入文件。 - php 快速/CGI

转载 作者:行者123 更新时间:2023-12-03 14:30:15 25 4
gpt4 key购买 nike

嗨,我需要帮助来设置 nginx 的配置。我是 NGINX 的新手,面临一些问题。

在我的 sites-availabledefault文件

它包含以下代码

server {
server_name www.test.com test.com;
access_log /sites/test/logs/access.log;
error_log /sites/test/logs/error.log;
root /sites/test;

location ~ / {

index index.php
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

当我编写 URL 时,上面的代码完美运行
www.test.com/service/public/

当我写
www.test.com/service/public/testservice (testservice 是公共(public)文件夹)它说 No input file specified.
如何修复它。
提前致谢。

我在下面尝试过,但没有运气
http://nginxlibrary.com/resolving-no-input-file-specified-error/
http://blog.martinfjordvald.com/2011/01/no-input-file-specified-with-php-and-nginx/

最佳答案

解决“未指定输入文件”错误

如果您使用 nginx 和 php-cgi 并按照标准程序进行设置,您可能经常会收到“未指定输入文件”错误。当 php-cgi 守护程序使用提供给它的 SCRIPT_FILENAME 参数找不到要执行的 .php 文件时,基本上会发生此错误。我将讨论错误的常见原因及其解决方案。
错误的路径被发送到 php-cgi 守护进程

通常,错误的路径 (SCRIPT_FILENAME) 被发送到 fastCGI 守护程序。在许多情况下,这是由于配置错误造成的。我见过的一些设置是这样配置的:

server {
listen [::]:80;
server_name example.com www.example.com;
access_log /var/www/logs/example.com.access.log;

location / {
root /var/www/example.com;
index index.html index.htm index.pl;
}

location /images {
autoindex on;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/example.com$fastcgi_script_name;
include fastcgi_params;
}
}

现在,这个配置有很多问题。一个明显而明显的问题是 location/ block 中的根指令。当根在位置 block 内定义时,它仅适用于该 block /定义。在这里,位置/images block 将不匹配任何请求,因为它没有定义任何 $document _root ,我们将不得不为它再次冗余定义 root 。显然,root 指令应该移出 location/ block 并在 server block 中定义。这样,位置 block 将继承父服务器 block 中定义的值。当然,如果你想为一个位置定义一个不同的 $document_root,你可以在一个位置 block 中放置一个根指令。

另一个问题是 fastCGI 参数 SCRIPT_FILENAME 的值是硬编码的。如果我们更改 root 指令的值并将我们的文件移动到目录链中的其他位置,php-cgi 将返回“未指定输入文件”错误,因为将无法在硬编码位置找到文件'当 $document_root 改变时不改变。所以,我们应该设置 SCRIPT_FILENAME 如下:
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

我们应该记住,根指令应该在服务器 block 中,否则只有 $fastcgi_script_name 将作为 SCRIPT_FILENAME 传递,我们将收到“未指定输入文件”错误。

source(Resolving "No input file specified" error)

关于NGINX - 没有指定输入文件。 - php 快速/CGI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21377321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com