Uderzyłem w ścianę podczas konfigurowania strony przy użyciu nginx / fpm. Strona wyświetla komunikat „Nie znaleziono pliku”, który pojawia się w pliku nginx error.log:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
Jestem nowy zarówno w Nginx, jak i fpm, a ten komunikat o błędzie nic dla mnie nie znaczy (nawet maszyna google nie pomogła!). Czy ktoś może rzucić jakieś światło na to, co może się dziać?
SCRIPT_FILENAME
.Odpowiedzi:
Powinieneś mieć
location
sekcję do obsługi żądań PHP skonfigurowaną podobnie do tego:(Dodatek
try_files
usuwa lukę w zabezpieczeniach, która może umożliwić wykonanie dowolnych plików jako PHP.)Ponadto, twój
root
powinna być zdefiniowana wserver
sekcji pliku konfiguracyjnego, nielocation
przekroju. Jest to jedna z najczęstszych błędów konfiguracji nginx .źródło
To uwaga dla instalacji pasażerskich.
Właśnie zainstalowałem nginx ze źródła przez pasażera, co spowodowało problem z php5-fpm. Domyślny plik nginx.conf korzysta z problemu opisanego przez Michaela Hamptona. Rozwiązaniem jest usunięcie bloku wokół dyrektyw root i index, aby:
staje się:
Ponadto blok php jest nieprawidłowo skonfigurowany. Zobacz odpowiedź Michaela Hamptonsa na właściwą drogę.
Dodatkowa uwaga może być taka, że jeśli php5-fpm jest skonfigurowany do używania gniazd, wskaż parametr fastcgi_pass w bloku php w nginx.conf do ustawień gniazd w /etc/php5/fpm/pool.d/www.conf.
źródło
Właśnie miałem ten problem w nowej wersji nginx. (konfiguracja pochodzi ze starszej wersji)
To, co musiałem zrobić, to umieścić
include fastcgi_params;
wyżej mój zwyczaj wSCRIPT_FILENAME
następujący sposób:W
SCRIPT_FILENAME
trakcie nadpisywania.źródło
Jeśli używasz aliasów w blokach lokalizacji, nieobsługiwany błąd 404 może również wykazywać to zachowanie. Możesz to zobaczyć, jeśli strona wyświetlana w przeglądarce jest prostym tekstem „Nie znaleziono pliku” w przeciwieństwie do ładniej sformatowanej (wyśrodkowanej) strony nginx 404. Zasadniczo mówi to, że nie można znaleźć strony 404.
Aby rozwiązać, dodaj dodatkową
try_files $uri =404
linię do bloku lokalizacji i ponownie załaduj konfigurację nginx. Oprócz tego, co powiedział Michael Hampton o rozwiązaniu określonej luki w zabezpieczeniach , pozwala to również programowi obsługi fastcgi na przesłonięcie definicji aliasu i znalezienie skryptu 404 w domyślnej lokalizacji.źródło
o linii 149, zmień php user && user group
Testuję to teraz pomyślnie.
źródło
Widziałem :
na serwerze postawiłem pod dużym obciążeniem podczas testów warunków skrajnych. Podejrzewam, że muszę jeszcze potwierdzić, że wyczerpały się dostępne uchwyty plików z systemu operacyjnego. W takim przypadku php-fpm nie może uzyskać odniesienia do pliku.
Zdaję sobie sprawę, że jest to spekulacyjne, ale z pewnością pasuje do mojego scenariusza i może również pomóc komuś innemu.
źródło
źródło