/ / Nginx + php fastcgi zobrazujúci text „Nie je zadaný žiadny vstupný súbor“. Namiesto 404 - php, nginx, fastcgi, fpm

Nginx + php fastcgi zobrazujúci „Nie je zadaný žiadny vstupný súbor“ namiesto 404 - php, nginx, fastcgi, fpm

Môj problém je celkom jednoduchý.

Keď požiadam o súbor .php, ktorý „neexistuje“, namiesto stránky 404, ktorú by ste očakávali, sa zobrazí správa „Nebol zadaný žiadny vstupný súbor.“.

Chápem, že všetky žiadosti s príponou .php odovzdávam php-fpm a myslím, že php-fpm vracia „Nie je zadaný žiadny vstupný súbor.“ keď súbor neexistuje (?). Ako to vyriešim?

/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;
}
}

mám cgi.fix_pathinfo = 0; v /etc/php5/fpm/php.ini.

odpovede:

0 pre odpoveď č. 1

prišiel som na to

Musíte pridať try_files $uri $uri/ /404.php?$args; na location ~.php$

Nie je zadaný žiadny vstupný súbor, pretože súbor neexistuje, a preto sa neodovzdáva. try_files $uri $uri/ /404.php?$args; skontroluje, či súbor skutočne existuje, inak presmeruje na 404.php