我正在尝试在我的 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 相对路径
您的解决方案是:
- 绝对路径就像迈克尔·汉普顿所说的那样。
- 连接点。
答案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。”