Skonfigurowałem serwer nginx z php5-fpm. Kiedy próbuję załadować witrynę, pojawia się pusta strona bez błędów. Strony HTML są obsługiwane dobrze, ale nie php. Próbowałem włączyć display_errors w php.ini, ale bez powodzenia. php5-fpm.log nie generuje żadnych błędów, podobnie jak nginx.
nginx.conf
server {
listen 80;
root /home/mike/www/606club;
index index.php index.html;
server_name mikeglaz.com www.mikeglaz.com;
error_log /var/log/nginx/error.log;
location ~ \.php$ {
#fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
EDYTOWAĆ
oto mój dziennik błędów nginx:
2013/03/15 03:52:55 [error] 1020#0: *55 open() "/home/mike/www/606club/robots.txt" failed (2: No such file or directory), client: 199.30.20.40, server: mikeglaz.com, request: "GET /robots.txt HTTP/1.1", host: "mikeglaz.com"
connect() failed ... fastcgi://127.0.0.1:9000
zaprzecza twojej konfiguracji nginx, przeładuj konf nginx?Odpowiedzi:
Dla porównania załączam mój
location
blok do przechwytywania plików z.php
rozszerzeniem:Sprawdź dokładnie
/path/to/fastcgi-params
i upewnij się, że jest obecny i czytelny dla użytkownika nginx.źródło
zastąpić
z
i usuń fastcgi_param SCRIPT_FILENAME ... w nginx.conf
źródło
.conf
jednego dodatkowego parametru konfiguracyjnego w_params
./etc/init.d/nginx restart
) naprawiło to również dla mnie podczas testowania Debiana ponginx
aktualizacji 10 września 2014 r.fastcgi_params
vsfastcgi.conf
: blog.martinfjordvald.com/2013/04/…Miałem również ten problem i ostatecznie znalazłem tutaj rozwiązanie . Krótko mówiąc, musisz dodać następujący wiersz do pliku konfiguracyjnego nginx fastcgi (/ etc / nginx / fastcgi_params w Ubuntu 12.04)
źródło
Wielu użytkowników wpada w ten wątek, spodziewając się znaleźć rozwiązanie dla pustych stron wyświetlanych podczas korzystania z nginx + php-fpm , a ja jestem jednym z nich. To jest podsumowanie tego, co zrobiłem po przeczytaniu wielu odpowiedzi tutaj oraz moich własnych dochodzeń (zaktualizowano do php7.2):
1) Otwórz
/etc/php/7.2/fpm/pool.d/www.conf
i sprawdź wartość parametrulisten
.2) Parametr
listen
powinien być zgodny zfastcgi_pass
parametrem w pliku konfiguracyjnym witryny (tj/etc/nginx/sites-enabled/default
.).3) Sprawdź, czy plik faktycznie istnieje:
4) Jeśli nie istnieje, oznacza to, że php7.2-fpm nie działa, więc musisz go zrestartować:
W odniesieniu do
location
sekcji w/etc/nginx/sites-enabled/default
:Sprawdź, czy plik
snippets/fastcgi-php.conf
istnieje w lokalizacji/etc/nginx/
:Ten plik zawiera listę definicji zmiennych wymaganych przez php7.2-fpm. Zmienne są definiowane bezpośrednio lub poprzez dołączenie oddzielnego pliku.
Ten plik znajduje się pod adresem
/etc/nginx/fastcgi.conf
i wygląda następująco:nginx zawiera dwa możliwe pliki parametrów: fastcgi_params i fastcgi.conf . Różnica między nimi to definicja zmiennej
SCRIPT_FILENAME
:Krótko mówiąc, fastcgi.conf powinien zawsze działać. Jeśli z jakiegoś powodu używasz fastcgi_params , powinieneś zdefiniować
SCRIPT_FILENAME
:Teraz przeładuj konfigurację nginx:
I sprawdź, czy plik php jest wyświetlany poprawnie. Na przykład:
/var/www/html/test.php
Gdzie
/var/www/html
jest ścieżka do katalogu głównego dokumentu.Jeśli mimo wszystko nadal widzisz pusty plik, upewnij się, że
php.ini
jestshort_open_tag
włączony (jeśli testujesz stronę PHP z krótkimi tagami).źródło
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Wreszcie załatwił sprawę.Upewnij się, że masz to w / etc / nginx / fastcgi_params
Kto wie, dlaczego jeszcze tego nie ma? Ilość czasu, którą musi to wspólnie zmarnować!
źródło
Napisałem krótki program w C, który zwraca zmienne środowiskowe przekazane z nginx do aplikacji fastCGI.
Zapisz to do pliku, np
fcgi_debug.c
Aby skompilować go najpierw zainstalować
gcc
ilibfcgi-dev
, a następnie uruchomić:Aby go uruchomić, zainstaluj
spawn-fcgi
, a następnie uruchom:Następnie zmień konfigurację nginx fcgi, aby wskazywała na program debugujący:
Zrestartuj nginx, odśwież stronę i powinieneś zobaczyć wszystkie parametry, które pojawią się w przeglądarce, abyś mógł debugować! :-)
źródło
apt-get install spawn-fcgi libfcgi-dev
.Te wskazówki pomogły mi w instalacji Ubuntu 14.04 LTS,
Dodatkowo musiałem włączyć
short_open_tag
IN/etc/php5/fpm/php.ini
źródło
Dodaj to w
/etc/nginx/conf.d/default.conf
:źródło
/etc/nginx/fastcgi_params
Myślę, że wpisanie wartości do pliku byłoby bardziej właściwe.W przypadku, gdy ktoś ma ten problem, ale żadna z powyższych odpowiedzi nie rozwiązuje jego problemów, miałem ten sam problem i najtrudniej było go znaleźć, ponieważ moje pliki konfiguracyjne były poprawne, moje zadania ngnix i php-fpm działały dobrze, i żadne dzienniki błędów nie zawierały żadnych błędów.
Głupi błąd, ale nigdy nie sprawdziłem zmiennej Short Open Tag w moim pliku php.ini, która była ustawiona na
short_open_tag = Off
. Ponieważ moje pliki php były używane<?
zamiast<?php
, strony były puste. Krótki otwarty tag powinien być ustawiony naOn
W moim przypadku .Mam nadzieję, że to komuś pomoże.
źródło
Przyczyną tego problemu jest to, że konfiguracje fastcgi w nginx nie działają zgodnie z wymaganiami, a na miejscu lub przetwarzaniu, odpowiadają one jako dane html. Istnieją dwa możliwe sposoby skonfigurowania nginx, aby uniknąć tego problemu.
Metoda 1:
Metoda 2:
Obie metody będą działać poprawnie, możesz śmiało wziąć dowolną z nich. Wykonują prawie te same operacje, z niewielką różnicą.
źródło
Powodzenia
źródło
Żadna z powyższych odpowiedzi nie działała dla mnie - PHP poprawnie renderował wszystko oprócz stron, które opierały się na mysqli, dla których wysyłał pustą stronę z kodem odpowiedzi 200 i nie rzucał żadnych błędów. Ponieważ jestem na OS X, poprawka była prosta
sudo port install php56-mysql
a następnie ponowne uruchomienie PHP-FPM i nginx.
Migrowałem ze starszej konfiguracji Apache / PHP do nginx i nie zauważyłem niezgodności wersji w sterowniku dla
php-mysql
iphp-fpm
.źródło
Miałem podobny problem, nginx przetwarzał stronę w połowie, a następnie się zatrzymywał. Żadne z proponowanych tutaj rozwiązań nie działało dla mnie. Naprawiłem to, zmieniając buforowanie nginx fastcgi:
Po zmianach mój
location
blok wyglądał tak:Aby uzyskać szczegółowe informacje, zobacz https://www.namhuy.net/3120/fix-nginx-upstream-response-buffered-temporary-file-error.html
źródło
Jeśli pojawia się pusty ekran, może to być spowodowane 2 przyczynami:
Przeglądarka blokująca wyświetlanie ramek. W niektórych przeglądarkach ramki są uważane za niebezpieczne. Aby temu zaradzić, możesz uruchomić bezramkową wersję phpPgAdmin przez
http://-your-domain-name-/intro.php
Włączyłeś funkcję bezpieczeństwa w Nginx dla opcji X-Frame spróbuj ją wyłączyć.
źródło
To rozwiązało mój problem:
źródło
To jest mój vhost dla UBUNTU 18.04 + apache + php7.2
Ostatnia linia odróżnia ją od pozostałych odpowiedzi.
źródło
Miałem podobny błąd, ale w połączeniu z Nextcloud. Więc jeśli to nie zadziałało, spróbuj: Spójrz na podręcznik Nginx .
źródło