0

我的问题很简单。

当我请求一个不存在的 .php 文件时,我看到“未指定输入文件。”,而不是您期望的 404 页面。

我知道我正在将所有带有 .php 扩展名的请求传递给 php-fpm,我猜 php-fpm 返回“未指定输入文件”。当文件不存在时(?)。我该如何解决?

/etc/nginx/nginx.conf:

http {
    server {
            listen              443 ssl;
            server_name         smarthome.dk;
            ssl_certificate     /home/www/SmartHome/cert/ssl.crt;
            ssl_certificate_key /home/www/SmartHome/cert/ssl.key;
            ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers         HIGH:!aNULL:!MD5;
            keepalive_timeout   70;

            root /home/www/SmartHome/public_html;
            index index.php index.html;

            location / {
                    try_files $uri $uri/ /404.php?$args;
            }
            location ~ \.php$ {
                    fastcgi_pass unix:/var/run/php5-fpm.sock;
                    fastcgi_index index.php;
                    include fastcgi_params;
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    fastcgi_intercept_errors on;
            }
    }

cgi.fix_pathinfo = 0;在 /etc/php5/fpm/php.ini。

4

1 回答 1

1

我想到了

您需要添加try_files $uri $uri/ /404.php?$args;location ~\.php$

未指定输入文件,因为该文件不存在,因此未通过。try_files $uri $uri/ /404.php?$args;检查文件是否确实存在,否则重定向到 404.php

于 2016-12-29T14:18:28.720 回答