nginx 和 php-cgi 上未指定输入文件

nginx 和 php-cgi 上未指定输入文件

我正在尝试在我的 Windows PC 上运行 nginx 和 php-cgi,我已经到了想要将 html 目录移回两个目录的地步,这样我就可以创建一个结构。

我现在唯一的问题是 PHP 无法获取任何 .php 文件。我尝试加载静态 html 文件 (localhost/test.html),它运行正常,但 localhost/info.php 根本不起作用。

有人能给我一些指导吗?服务器块的部分可以在下面找到。

server {
        listen       80;
        server_name  localhost;
        root   ../../www;
        index  index.html index.htm index.php;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location ~ \.php$ {
          fastcgi_pass   127.0.0.1:9123;
          fastcgi_index  index.php;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include        fastcgi_params;
        }

答案1

不要在root指令中使用相对路径。请使用绝对路径。

答案2

Windows 上的 php-cgi 显然存在与相对路径有关的错误:

[PHP-BUG] Bug #54955 [新]:FastCGI 无法识别 Windows 相对路径

您的解决方案是:

  1. 绝对路径就像迈克尔·汉普顿所说的那样。
  2. 连接点

答案3

如果您在本地机器上使用 NGINX 堆栈进行开发,则可能存在正在播放 Gotcha 的预配置设置:

open_basedir = "c:/webserver.;c:/”

这里这是我在 Windows 上使用 WinNMP 发现错误的地方:

今天我想在我的 Windows 机器上试用 Nginx 服务器。在为我的项目设置了基本的服务器块详细信息后,我调用了站点 URL。在 WT-NMP 堆栈中快速设置我需要的软件。在服务器块中,我需要在 WWW 以外的其他位置指定我的根路径。

然后,当我点击该 URL 时,我的 PHP 脚本显示“未指定输入文件”。

现在我不太喜欢阅读,所以我只是到处搜索,并没有找到太多的解决办法。所以我查看了 php 日志文件。在那里我收到错误消息,因为我的项目文件夹路径不在允许的路径内:(c:/wt-nmp)

因此,基本上我必须编辑 php.init open_basedir 值以包含我存储项目的路径。但是在这里我可以看到,即使驱动程序也被视为路径。所以我最终放置了驱动器号,因为如果我想在“d”驱动器中存储更多网站,我就不会遇到此错误。这是最后一行。我将文本加粗以表明我所做的更改。

open_basedir = “c:/wt-nmp.;d:/”

“快乐的 Nginx,是一个好的 Nginx。”

相关内容