NGINX nie wykonuje plików PHP

9

Nie mogłem znaleźć na to odpowiedzi. Zainstalowano PHP5 + NGINX + PHP-FPM i nie można uruchamiać plików php, pojawia się komunikat „Ups! To łącze jest uszkodzone”. błąd w CHROME. Nie mam żadnego cennego raportu dziennika błędów, mam plik index.php w katalogu głównym, próbowałem utworzyć niestandardowy plik phpinfo.php, żadne nie działało.

I DO może ładować pliki HTML, ale nie mogę PHP.

Oto konfiguracja mojej lokalnej witryny w NGINX:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    location / {
        root   /var/www/website;
        index  index.html index.htm index.php;
    }


    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/website$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

}

Zmieniłem własność całego katalogu na www-data: www-data, zrobiłem 777 w pliku php, nic. Zrestartowałem nginx, FPM, nic.

Wsparcie? :(

Gabriel A. Zorrilla
źródło
zajrzyj do dziennika błędów
Mike,
Już tak zrobiłem: „Nie mam żadnego cennego raportu dziennika błędów”. Jest całkowicie pusty.
Gabriel A. Zorrilla
Potrzebujesz więcej danych, aby zdiagnozować problem. Proponuję zacząć od dodania „fastcgi_intercept_errors on;” do twojej konfiguracji (jeśli nie w fastcgi_params), aby zarejestrować wszelkie błędy FPM. Dodaj także „debugowanie” do linii error_log, aby uzyskać dużo więcej szczegółów (sprawdź także główny dziennik błędów nginx (ewentualnie w / var / log)). Dyrektywa w sprawie nazwy serwera wygląda nietypowo - nie jestem pewien, czy zastąpiłeś ją tym postem, czy w rzeczywistości tak jest. Jako ogólną rekomendację przenieś dyrektywę root poza blok lokalizacji. (Końcowa (mało prawdopodobna) sugestia: upewnij się, że domyślny serwer nie wyświetla wyświetlanych stron HTML).
cyberx86 17.10.11

Odpowiedzi:

9

pojawia się komunikat „Ups! Ten link wygląda na uszkodzony.” błąd w CHROME.

Chrome wyświetla własną stronę błędu, jeśli strona błędu ma mniej niż 512 bajtów.

Podejrzewam, że masz następujący wiersz fastcgi_params:

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

a jeśli tak, ponieważ rootdyrektywa jest zdefiniowana w location /, nigdy nie będzie stosowana location ~ \.php$, w ten sposób SCRIPT_FILENAMEstaje się URI.

Można to rozwiązać, przenosząc rootdyrektywę do serverkontekstu poziomu:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    root   /var/www/website;

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

}
kwanty
źródło
Bingo Przeniesiono root do bloku serwera zgodnie z sugestią i działało. Dzięki!
Gabriel A. Zorrilla
@quanta: Czy OP zmodyfikował konfigurację w swoim pytaniu? Ponieważ jest to ścieżka zakodowana na stałe, powinna ona nadal działać idealnie, gdy dyrektywa root jest zdefiniowana w kontekście lokalizacji. Jedynym przypadkiem, w którym nie zadziałałoby, było zdefiniowanie SCRIPT_FILENAME w swoim pliku fastcgi_params przy użyciu $ root_katalog, a tym samym zastąpienie jego zakodowanego na stałe.
Martin Fjordvald
@MartinF: Nie, OP nie edytował konfiguracji. Masz rację. Zmienię swoją odpowiedź.
kwanta
-3

W moim przypadku brakowało pakietu php-zip. Aby to naprawić, uruchomiłem:

yum install -y php-zip
systemctl restart php-fpm nginx
wejdross
źródło
3
Najwyraźniej przyczyną OP było coś zupełnie innego.
Sven
To nie znaczy, że ktoś, kto trafi na tę stronę z tym problemem, będzie miał tę samą przyczynę co OP, może równie dobrze mieć przyczynę, którą zrobił wejdross i uzna tę odpowiedź za przydatną. Pytanie nie jest specyficzne dla tej przyczyny, jest specyficzne dla tego objawu i oczywiście istnieje wiele przyczyn, więc ludzie z różnymi przyczynami mogą tu skończyć.
Synetech,
-4
    fastcgi_pass unix:/var/run/php5-fpm.sock;
James
źródło
4
Witaj w Server Fault! Wygląda na to, że masz wiedzę, aby udzielić dobrej odpowiedzi tutaj, ale zastanów się nad przeczytaniem Jak napisać dobrą odpowiedź? w naszym centrum pomocy, a następnie popraw i rozwiń swoją odpowiedź. Twoje polecenia / kod / ustawienia mogą technicznie być rozwiązaniem, ale niektóre wyjaśnienia są mile widziane. Z góry dziękuję.
HBruijn,
4
Ponadto: nawet jeśli ta jedna linia rozwiązuje problem, dokąd on zmierza? PO pokazuje dwa locations. Czy linia idzie w jednym? Inny? Obie? Edytuj swoją odpowiedź, aby była kompletna.
David Makogon,