2016-12-29 26 views
0

Моя проблема я довольно прост.Nginx + php fastcgi показывает «Нет указанного файла ввода». вместо 404

Когда я запрашиваю файл .php, который не существует, я вижу «No input file указанный.» Вместо страницы 404, которую вы ожидаете.

Я получаю, что передаю все запросы с расширением .php на php-fpm, и я думаю, что php-fpm возвращает «No input file defined». когда файл не существует (?). Как это исправить?

/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.

ответ

0

Я понял это

Вам нужно добавить try_files $uri $uri/ /404.php?$args; к location ~\.php$

входной файл не указан, потому что файл не существует, и поэтому не передается. try_files $uri $uri/ /404.php?$args; проверяет, действительно ли файл существует, в противном случае он перенаправляется на 404.php

+0

Примите ваш ответ, чтобы закрыть запрос – Dayo

+0

@Dayo Вам нужно подождать 2 дня, прежде чем вы сможете принять свой собственный ответ. –