Instaluję witrynę w kropli (Digital Ocean). Mam problem z poprawną instalacją NGINX z PHP. Zrobiłem tutorial https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04, ale kiedy próbuję uruchomić jakieś .php po prostu go pobiera ... na przykład ... http://5.101.99.123/info.php
działa, ale ... Jeśli przejdę do głównego http://5.101.99.123
, pobiera mój index.php: /
Dowolny pomysł?
-rw-r--r-- 1 agitar_user www-data 418 Jul 31 18:27 index.php
-rw-r--r-- 1 agitar_user www-data 21 Aug 31 11:20 info.php
Mój / etc / nginx / sites-available / default
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/html;
index index.html index.htm index.php;
# Make site accessible from http://localhost/
server_name agitarycompartir.com;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# 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;
}
location / {
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
... Inne „lokalizacja” są komentowane (#)
Odpowiedzi:
Spróbuj tego:
Edytować
/etc/nginx/sites-available/default
Usuń komentarz z obu linii nasłuchu, aby nginx nasłuchiwał na porcie 80 IPv4 i IPv6.
Zostaw w
server_name
spokojuDodaj
index.php
doindex
liniiOdkomentuj
location ~ \.php$ {}
Edytuj
/etc/php5/fpm/php.ini
i upewnij się, żecgi.fix_pathinfo
jest ustawiony na0
Zrestartuj nginx i php5-fpm
sudo service nginx restart && sudo service php5-fpm restart
Zacząłem używać Linuksa tydzień temu, więc naprawdę mam nadzieję, że w tym pomogę. Używam edytora tekstu nano do edycji plików. uruchom apt-get install nano, jeśli go nie masz. Google, aby dowiedzieć się więcej.
źródło
service nginx restart && service php5-fpm restart
nginx -s reload
unix:/var/run/php5-fpm.sock;
przekonwertuj naunix:/var/run/php/php7.2-fpm.sock;
(jeszcze jedno zagnieżdżenie/php
)Musisz dodać to do / etc / nginx / sites-enabled / default, aby wykonywać pliki php na serwerze Nginx:
źródło
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
php7.0-fpm.pid
, a niephp7.0-fpm.sock
w/var/run/php/
to, co to znaczy?sudo service php7.0-fpm restart
. brak sock oznacza, że trwa proces php./etc/nginx/conf.d/wordpress_https.conf
Miałem podobny problem, który został rozwiązany przez opróżnienie pamięci podręcznej przeglądarki (działał również dobrze z inną przeglądarką).
źródło
Zaktualizuj konfigurację nginx / etc / nginx / sites-available / default lub plik konfiguracyjny
jeśli używasz php7, użyj tego
jeśli używasz php5, użyj tego
Odwiedź tutaj, aby uzyskać szczegółowe informacje. Szczegóły tutaj
źródło
include snippets/fastcgi-php.conf;
?Widzę wiele rozwiązań powyżej i wiele z nich działało poprawnie dla mnie, ale nie rozumiałem, co robią i martwiłem się, że wystarczy skopiować i wkleić kod, a konkretnie fastcgi . Więc oto moje 2 centy,
W przypadku niektórych serwerów, takich jak Apache, istnieje wbudowana obsługa interpretacji PHP, a zatem nie ma potrzeby korzystania z CGI.
To łącze do cyfrowego oceanu dość dobrze wyjaśnia kroki instalacji FPM i nie piszę kroków potrzebnych do rozwiązania problemu pobierania plików php zamiast renderowania, ponieważ inne odpowiedzi IMHO są całkiem dobre.
źródło
Miałem ten sam problem i żadna z odpowiedzi nie rozwiązała problemu.
Biegłem:
aby przetestować plik konfiguracyjny w / etc / nginx / sites-available / default.
Dał mi te błędy:
Więc wszedłem do pliku konfiguracyjnego i w ostatniej linii było
Odkomentowałem, ponownie uruchomiłem polecenie testowe i zadziałało
źródło
To zadziałało dla mnie.
1) plik MyApp
vi / etc / nginx / sites-available / myApp
Użytkownicy PHP5
Zmiana
do
2) Skonfiguruj cgi.fix_pathinfo
Ustaw cgi.fix_pathinfo na 0
Lokalizacja:
PHP5 /etc/php5/fpm/php.ini
PHP7 /etc/php/7.0/fpm/php.ini
3) Uruchom ponownie usługi
FPM
php5
sudo service php5-fpm restart
php7
sudo service php7.0-fpm restart
NGINX
źródło
U mnie pomogło dodanie
?$query_string
na końcu /index.php, jak poniżej:źródło
Jeśli którakolwiek z proponowanych odpowiedzi nie działa, spróbuj tego:
1. naprawić www.conf w etc / php5 / fpm / pool. D:
listen = 127.0.0.1:9000;(delete all line contain listen= )
2. naprawić nginx.conf w usr / local / nginx / conf:
remove server block server{} (if exist) in block html{} because we use server{} in default (config file in etc/nginx/site-available) which was included in nginx.conf.
3. Napraw domyślny plik w etc / nginx / site-available
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; }
4. uruchom ponownie usługę Nginx
5. uruchom ponownie usługę php
6. cieszyć się
Używam Ubuntu 14.04
źródło
Powyższa odpowiedź wydawała się zbytnio komentować rozwiązanie, do którego doszedłem. Tak wyglądał mój plik:
/ etc / nginx / sites-available / default
Mam nadzieję, że pomoże to niektórym osobom sfrustrowanym w niedzielne popołudnie (c:
źródło
Powyższe fragmenty działały u mnie w przypadku php7.2
źródło
Dla każdego, kto ma ten sam problem z PHP 7, zrobiłem to, aby nginx poprawnie wykonywał pliki php w CentOS 7, opublikowane tutaj, więc na wypadek, gdyby ktoś miał ten sam problem:
Postępuj krok po kroku z tym dokumentem na temat Digital Ocean .
Otwórz
/etc/nginx/conf.d/default.conf
(domyślnie nie mam włączonych ani dostępnych witryn, możesz odpowiednio edytować).Edytuj
location
parametr jak poniżej:default.conf :
Uruchom ponownie usługi Nginx i PHP
sudo systemctl restart php-fpm
orazsudo systemctl restart nginx
.Ostatnia, ale najważniejsza, wyczyść pamięć podręczną przeglądarki lub uruchom ją
incognito (Chrome)
lubPrivate Browsing (Firefox)
itp.Mam nadzieję, że to pomocne i szczęśliwe kodowanie
źródło
Moim rozwiązaniem było dodanie
na przykład do mojego niestandardowego pliku konfiguracyjnego
etc/nginx/sites-available/example.com.conf
Dodawanie do
/etc/nginx/sites-available/default
nie działa dla mnie.źródło
W moim przypadku nie korzystałem
/etc/nginx/sites-available/default
z innego pliku konfiguracyjnego bloku serwera (np. Example.com), a jedynym sposobem na rozwiązanie tego problemu jest usunięcie domyślnego dowiązania symbolicznego do pliku konfiguracyjnego bloku serwera:następnie przeładowuję Nginx:
źródło
Rozwiązałem teraz swój problem tym kodem (zmień swoje IP):
źródło
To, co zadziałało dla mnie z Ubuntu 16.04 i php7, to usunięcie tej linii
fastcgi_split_path_info ^(.+\.php)(/.+)$;
Po tym przestał pobierać pliki php.
źródło
Usuń komentarz z lokalizacji .php w / etc / nginx / sites-available / default
źródło
Jeśli cokolwiek innego ci nie pomoże. A może wcześniej zainstalowałeś apache2 z plikiem testowym info.php. Po prostu wyczyść dane aplikacji (pamięć podręczna, plik cookie) dla hosta lokalnego.
źródło
sprawdź, czy rozszerzenie pliku konfiguracyjnego nginx to * .conf.
na przykład: /etc/nginx/conf.d/myfoo.conf
Mam taką samą sytuację. Po zmianie nazwy mojego pliku konfiguracyjnego z myfoo na myfoo.conf zostało to naprawione. Nie zapomnij o ponownym uruchomieniu nginx po zmianie jego nazwy.
źródło
Następnie otwórz terminal i uruchom następujące polecenie:
Następnie dodaj następujący kod w
default
pliku:Jeśli jakakolwiek niezgodność, po prostu popraw i uruchom ponownie Nginx z terminala za pomocą następującego polecenia
Następnie przejdź do przeglądarki i ciesz się ...
źródło
Dla mnie była to linia: fastcgi_pass unix: /var/run/php5-fpm.sock;
który musiał być po prostu: fastcgi_pass unix: /run/php5-fpm.sock;
źródło
Miałem zamiar zwariować, próbując to naprawić, dla mnie problem polegał na tym, że Cloudflare zapisał plik php w pamięci podręcznej i zmuszał mnie do jego pobierania.
Rozwiązaniem dla mnie było wyczyszczenie pamięci podręcznej w Cloudflare.
źródło
Miałem ten sam problem, który go rozwiązał, ponieważ ten blok serwera ma również ten blok nad innymi blokami lokalizacji, jeśli masz problemy z ładowaniem css. Które dodałem do mojego pliku konfiguracyjnego dostępnego w witrynie.
źródło
Więc to w końcu zadziałało w moim przypadku jako reguły przepisywania, w których winowajcą
zmieniłem zasady przepisywania nginx w następujący sposób.
staje się...
Najwyraźniej bez ostatniego słowa kluczowego żądanie nie zostało ponownie uruchomione, więc nigdy nie trafiło do
.php
segmentu lokalizacji i zostało po prostu zinterpretowane jako pobranie -źródło
dla przypomnienia, stwierdziłem, że mój php-fpm nie działa i naprawiłem to za pomocą
service php7.2-fpm stop
źródło
Jeszcze jedna rzecz do sprawdzenia: jeśli skonfigurowałeś dostęp HTTPS przed skonfigurowaniem PHP - użyłem certbot - musisz dwukrotnie wprowadzić zmiany w / etc / nginx / sites-available / default , bo tam będą dwa bloki serwerów (jeden nasłuchujący na porcie 80 i jeden nasłuchujący na porcie 443).
(Skonfigurowałem ten serwer głównie dla poczty e-mail i nie miałem żadnego zastosowania dla PHP, kiedy po raz pierwszy zainstalowałem nginx, tylko jako sposób na łatwiejsze uruchomienie certbota).
źródło