Dzisiaj zespół dotdeb.org wypuścił nginxa 1.8.0 na Debiana, a ja niezwłocznie dokonałem aktualizacji z wersji 1.6.3. Początkową radość szybko zastąpiła panika, kiedy okazało się, że wszystkie strony oparte o PHP przestały działać, a konkretnie zaczęły zwracać pustą treść. W logach nginxa, PHP-FPM ani nigdzie indziej nie znalazłem błędów, w konfiguracji nginxa zmiany były tylko kosmetyczne, konfiguracja PHP w ogóle nie była ruszana, po prostu czeski film.
Rozwiązanie okazało się trywialne: w pliku /etc/nginx/fastcgi_params
należy dodać linijkę:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Potem już tylko przeładowanie konfiguracji nginxa i wszystko powinno działać.
Tytułem uzupełnienia dodam, że na właściwy trop trafiłem, kiedy spróbowałem połaczyć się z PHP-FPM bezpośrednio przez FastCGI. Wedle przepisu z tej strony w konsoli zapodałem:
SCRIPT_NAME=/index.php \ SCRIPT_FILENAME=/index.php \ REQUEST_METHOD=GET \ DOCUMENT_ROOT=/var/www/anime.com.pl/ \ cgi-fcgi -bind -connect /var/run/php5-fpm.sock
W odpowiedzi otrzymałem:
Primary script unknown Status: 404 Not Found Content-type: text/html File not found.
Dalej już było z górki. Ciekawe tylko dlaczego to się nigdzie nie zalogowało?
Jako lekturę uzupełniającą polecam wpis z bloga Martina Fjordvalda, który tłumaczy czym różni się plik fastcgi_params
od fastcgi.conf
i skąd się ta różnica wzięła.
Dzięki za wpis! Instalowałem dzisiaj (w sumie to wczoraj) aktualizacje i też okazało się, że nagle PHP nie działa, nie serwuje żadnych danych… Nawet czystego tekstu z pliku .php… Podejrzewałem, że skoro nie ma żadnych logów, to albo PHP musiało dostawać pusty plik, albo w ogóle nie było wywoływane do zadań, ale nie byłem w stanie znaleźć przyczyny… No a dzięki Twojemu wpisowi, wszystko wróciło do normy :)
Cieszę się, że moje dociekania okazały się przydatne. Wciąż mnie zastanawia czemu to się nigdzie nie zalogowało.