Nginx + nette nefunguje. Vždy jen „File not found.“
- Dark
- Člen | 5
Ahoj,
forum jsem zkoušel prohledat, nějaké věci zkoušel, ale pořád se nedaří.
Na apache2 stránka jede, ale na nginxu pouze „File not found.“
Neměl by tu prosím někdo nějakou radu? Děkuji :)
Nastavení vhostu:
server {
listen 80;
listen [::]:80;
server_name is.dayz-sa.cz www.is.dayz-sa.cz;
root /var/www/is.dayz-sa.cz/public_html;
access_log /var/www/is.dayz-sa.cz/logs/access.log;
error_log /var/www/is.dayz-sa.cz/logs/error.log;
index index.html index.php;
client_max_body_size 1024M;
try_files $uri $uri/ /index.php?$args;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED $document_root/$fastcgi_path_info;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Editoval Dark (15. 1. 2015 23:07)
- Tomáš Kolinger
- Člen | 136
První co mě napadne jsou ty podivně složený cesty pro PHP, co tě k tomu vede? Celkově nějak nechápu, proč se lidi furt snaží tunit ty cesty, když to funguje s defaultní konfigurací…
Zkus vyhodit všechny tyhle fastcgi_param a zkontroluj tvůj /etc/nginx/fastcgi_params, dotdeb má u nginx 1.6 defaultně toto:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTPS $https if_not_empty;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
A s tím definuješ .php lokaci takto:
try_files $uri =404;
include fastcgi_params;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/var/lib/php5-fpm/www.sock;
A je to na 100% funkční, běží mě s tím spoustu virtualhostů a nikdy žádný file not found nebylo. Zkus použít stejený fastcgi_params ale radši se ujisti, že máš podobnou verzi nginx.
Editoval Tomáš Kolinger (15. 1. 2015 23:36)
- Tomáš Kolinger
- Člen | 136
Tak to musíš mít problém ještě někde jinde… Zkoušel si vypnout/zapnout cgi.fix_pathinfo v php.ini? Každopádně výchozí konfigurace dotdebu funguje, mám to hned na několika strojích a nikdy jsem s cestama problém neměl.
- Dark
- Člen | 5
Pokud vypnu cgi.fix_pathinfo, tak dostanu „No input file specified.“
Zkoušel jsem teď čístou instalaci nginxu, jen s tím, že jsem změnil
try_files $uri $uri/ =404;
(háže 404) na
try_files $uri $uri/ /index.php?$args;
Omlouvám se s tímto nemám moc zkušeností, tak to je o to horší :-)
Editoval Dark (16. 1. 2015 13:45)
- kudlajz
- Člen | 70
JA to mam nastaveno takhle:
listen 80;
server_name localhost.example;
root /usr/www/example/www;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
- premek_k
- Člen | 172
Ahoj pánové.
Už několik dní zápasím s rozchozením nginx na macOs, vyzkoušel jsem
vše, co se tady na foru píše, prohledal jsem internet, ale nemohu
s tím hnout.
Vesměs mi už vše šlape, až na routy mimo HomePage:default, resp. /www/index.php. To znamená, že mainpage projektu se mi načte (nebo i třeba Adminer funguje v pohodě), nicméně jakýkoliv odkaz někam „hlouběji“ do aplikace mi vrací 404.
V latte tvořím odkaz takto:
<a n:href="HomePage:newCommitment">...</a>
Vyrenderovaný odkaz vypadá takto:
<a href="/publiccommitment/www/homepage/new-commitment">...</a>
ACCESS_LOG:
127.0.0.1 - - [04/Mar/2015:15:27:57 +0100] "GET /publiccommitment/www/ HTTP/1.1" 200 87643 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/600.3.18 (KHTML, like Gecko) Version/8.0.3 Safari/600.3.18" "-"
127.0.0.1 - - [04/Mar/2015:15:27:59 +0100] "GET /publiccommitment/www/homepage/new-commitment HTTP/1.1" 404 372 "http://localhost/publiccommitment/www/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/600.3.18 (KHTML, like Gecko) Version/8.0.3 Safari/600.3.18" "-"
ERROR_LOG:
2015/03/04 15:27:50 [error] 1276#0: *132 open() "/Users/Admin/Development/www/publiccommitment/www/homepage/new-commitment" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /publiccommitment/www/homepage/new-commitment HTTP/1.1", host: "localhost"
2015/03/04 15:27:59 [error] 1276#0: *131 open() "/Users/Admin/Development/www/publiccommitment/www/homepage/new-commitment" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /publiccommitment/www/homepage/new-commitment HTTP/1.1", host: "localhost", referrer: "http://localhost/publiccommitment/www/"
Je mi jasné, že ta 404 je „oprávněná“, jelikož cesta /Users/Admin/Development/www/publiccommitment/www/homepage/new-commitment skutečně neexistuje, ale nemohu přijít na to, v čem konkrétně je ten problém.
Umí mi někdo poradit?
Přemek