2016-02-08 14 views
7

tak ma wiele artykułów przywołujące ten kod błędu:debugowanie słynny - FastCGI wysłane stderr: „scenariusz podstawowy nieznany” podczas czytania nagłówka odpowiedzi od góry

FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream... 

To prawdopodobnie oznacza, że ​​ten komunikat o błędzie jest bardziej lub mniej bezużyteczny.

Wiadomość informuje nas, że program obsługi FastCGI nie lubi tego, co został wysłany z jakiegoś powodu. Problem polega na tym, że czasami nie mamy pojęcia, jaki jest tego powód.

Więc ja ponownie podając pytanie - w jaki sposób debugowania kodu ten błąd?

Weź pod uwagę sytuację, w której mamy bardzo prostą stronę z samym plikiem phpinfo.php. Dodatkowo, istnieje bardzo prosty nginx config, jak następuje:

server { 
    server_name testsite.local; 

    root /var/local/mysite/; 

    location/{ 
     index index.html index.htm index.php; 
    } 

    location ~ \.php$ { 
     include /etc/nginx/fastcgi_params; 
     fastcgi_pass fastcgi_backend; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    } 
} 

Jak widzimy wyjście/log dokładnie co fastcgi_params został wysłany do skryptu?

Jak możemy zobaczyć rzeczywisty komunikat o błędzie? W moim przypadku używam php-fpm. Nie ma informacji w dzienniku o tym błędzie. Dzienniki nie dołączają żadnych wierszy dla tego błędu. Czy istnieje tryb szczegółowy dla php-fpm?

/var/log/php-fpm/error.log 
/var/log/php-fpm/www-error.log 

Próbowałem ustawić to w pliku php-fpm.conf

log_level = notice 

i to w php-fpm.d pliku/www.conf:

catch_workers_output = yes 

Odpowiedz

16

Aby odpowiedzieć na to pytanie:

  1. w php-fpm.d plik/www.conf:

ustawić wpis access.log:

access.log = /var/log/$pool.access.log 
  1. restartu php-fpm usługi.

  2. próby uzyskania dostępu do strony

  3. koci /var/log/www.access.log, widać logi dostępowe jak:

- - 10/Nov/2016:19:02:11 +0000 "GET /app.php" 404 - - 10/Nov/2016:19:02:37 +0000 "GET /app.php" 404

Aby rozwiązać „primary nieznany skrypt "problem:

  • jeśli widzisz komunikat" GET/" Bez poprawnej nazwy pliku php, to twój problem z nginxem.

  • , jeśli widzisz komunikat "GET/app.php "z 404, oznacza to, że nginx poprawnie przekazuje nazwę pliku skryptu, ale php-fpm nie może uzyskać dostępu do tego pliku (użytkownik" php-fpm: php-fpm "nie ma dostępu do twojego pliku, który uwięził mnie przez 3 godziny)

nadzieję, że moja odpowiedź pomoże.

+3

byłem niewidomy, a teraz widzę ... – cucu8