10

下面是我的 nginx.conf。

如果不存在文件/index.php,则可以正常提供。

但是当我的 URL/foo/bar => /foo/bar/index.php通过下载作为 PHP 源代码提供时。

有任何想法吗?

try_files $uri $uri/ $uri/index.php /index.php;

location ~ \.php$ { 
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}
4

3 回答 3

4

解决方案是添加索引 index.php

    index index.php

    try_files $uri $uri/ $uri/index.php /index.php;

    location ~ \.php$ { 
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
于 2012-08-23T15:08:32.640 回答
1

我的配置

index index.html index.htm index.php;
location ~ \.php$ {
        fastcgi_pass unix:/tmp/php-fpm.sock;
        include fastcgi_params;
      }

重新加载 nginx 和 fastcgi

于 2012-08-23T13:29:29.233 回答
0

我也有同样的问题。当我在 PHP 上下文 ( location ~ ^(.+\.php)(.*)$ { ...) 中有以下内容时:

try_files $fastcgi_script_name =404;

..它总是返回404。最后我阅读了try_files docs,它说:

文件的路径是根据根和别名指令从文件参数构造的。

我只alias为每个位置块定义了(当然,在 PHP-FPM 块中没有定义),但在任何地方都没有整体root设置,所以 NGiNX 不知道在哪里查找文件。一旦我为服务器块设置了根目录,它就开始工作了。

于 2014-09-26T17:38:26.787 回答