Ich installiere eine Website in einem Tröpfchen (Digital Ocean). Ich habe ein Problem bei der ordnungsgemäßen Installation von NGINX mit PHP. Ich habe ein Tutorial https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04 erstellt, aber wenn ich versuche, einige auszuführen .php-Datei lädt es nur herunter ... zum Beispiel ... http://5.101.99.123/info.php
es funktioniert, aber ... Wenn ich zur Hauptdatei gehe, http://5.101.99.123
lädt es meine index.php herunter: /
Irgendeine Idee?
-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
Mein / 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
}
... Andere "Ort" sind kommentiert (#)
Antworten:
Versuche dies:
Bearbeiten
/etc/nginx/sites-available/default
Kommentieren Sie beide Abhörzeilen aus, damit Nginx Port 80 IPv4 und IPv6 abhört.
Lass in
server_name
Ruheindex.php
Zurindex
Zeile hinzufügenKommentar
location ~ \.php$ {}
Bearbeiten
/etc/php5/fpm/php.ini
und sicherstellen, dass auf eingestelltcgi.fix_pathinfo
ist0
Starten Sie nginx und php5-fpm neu
sudo service nginx restart && sudo service php5-fpm restart
Ich habe gerade vor einer Woche angefangen, Linux zu verwenden, also hoffe ich wirklich, Ihnen dabei zu helfen. Ich benutze den Nano-Texteditor, um die Dateien zu bearbeiten. Führen Sie apt-get install nano aus, wenn Sie es nicht haben. Google darauf, um mehr zu erfahren.
quelle
service nginx restart && service php5-fpm restart
nginx -s reload
unix:/var/run/php5-fpm.sock;
konvertieren zuunix:/var/run/php/php7.2-fpm.sock;
(eine weitere Verschachtelung/php
)Sie müssen dies zu / etc / nginx / sites-enabled / default hinzufügen, um PHP-Dateien auf Nginx Server auszuführen:
quelle
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
php7.0-fpm.pid
und nichtphp7.0-fpm.sock
in/var/run/php/
was bedeutet das?sudo service php7.0-fpm restart
. Wenn die Socke fehlt, zeigt dies an, dass der PHP-Prozess ausgeführt wird./etc/nginx/conf.d/wordpress_https.conf
Ich hatte ein ähnliches Problem, das durch Leeren des Browser-Cache behoben wurde (funktionierte auch gut mit anderen Browsern).
quelle
Aktualisieren Sie nginx config / etc / nginx / sites-available / default oder Ihre Konfigurationsdatei
Wenn Sie PHP7 verwenden, verwenden Sie diese
Wenn Sie PHP5 verwenden, verwenden Sie dies
Besuchen Sie hier für vollständige Details Details hier
quelle
include snippets/fastcgi-php.conf;
?Ich sehe oben viele Lösungen und viele haben für mich richtig funktioniert, aber ich habe nicht verstanden, was sie taten, und war besorgt, nur den Code zu kopieren, insbesondere fastcgi . Also hier sind meine 2 Cent,
Für einige Server wie Apache ist die Unterstützung für die Interpretation von PHP integriert, sodass kein CGI erforderlich ist.
Dieser digitale Ozeanlink erklärt die Schritte zur Installation von FPM ziemlich gut und ich schreibe nicht die Schritte, die erforderlich sind, um das Problem des Herunterladens von PHP-Dateien anstelle des Renderns zu lösen, da die anderen Antworten meiner Meinung nach ziemlich gut sind.
quelle
Ich hatte das gleiche Problem und keine der Antworten löste das Problem.
Ich rannte:
um die Konfigurationsdatei unter / etc / nginx / sites-available / default zu testen.
Es gab mir diese Fehler:
Also ging ich in die Konfigurationsdatei und in der letzten Zeile gab es
Ich habe einen Kommentar abgegeben, den Testbefehl erneut ausgeführt und es hat funktioniert
quelle
Das hat bei mir funktioniert.
1) MyApp-Datei
vi / etc / nginx / sites-available / myApp
PHP5-Benutzer
Veränderung
zu
2) Konfigurieren Sie cgi.fix_pathinfo
Setzen Sie cgi.fix_pathinfo auf 0
Ort:
PHP5 /etc/php5/fpm/php.ini
PHP7 /etc/php/7.0/fpm/php.ini
3) Starten Sie die Dienste neu
FPM
php5
sudo service php5-fpm restart
php7
sudo service php7.0-fpm restart
NGINX
quelle
Für mich hat es geholfen,
?$query_string
am Ende von /index.php wie folgt hinzuzufügen :quelle
Wenn eine der vorgeschlagenen Antworten nicht funktioniert, versuchen Sie Folgendes:
1.fix www.conf in etc / php5 / fpm / pool.d:
listen = 127.0.0.1:9000;(delete all line contain listen= )
2.fix nginx.conf in 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. Korrigieren Sie die Standarddatei in etc / nginx / site-available
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; }
4. Starten Sie den Nginx-Dienst neu
5. Starten Sie den PHP-Dienst neu
6.genießen
Ich benutze Ubuntu 14.04
quelle
Die obige Antwort schien zu viel für die Lösung zu sagen, die ich erreicht hatte. So sah meine Datei aus:
/ etc / nginx / sites-available / default
Hoffe, das hilft einigen Leuten, die an einem Sonntagnachmittag frustriert sind (c:
quelle
Die obigen Schnipsel haben bei php7.2 für mich funktioniert
quelle
Für alle, die das gleiche Problem mit PHP 7 haben, habe ich Folgendes getan, damit nginx PHP-Dateien in CentOS 7 ordnungsgemäß ausführt. Dies ist der Fall, wenn jemand das gleiche Problem hat:
Befolgen Sie Schritt für Schritt dieses Dokument zu Digital Ocean .
Öffnen Sie das
/etc/nginx/conf.d/default.conf
(standardmäßig sind weder Websites aktiviert noch Websites verfügbar, Sie können sie entsprechend bearbeiten).Bearbeiten Sie den
location
Parameter wie folgt:default.conf :
Starten Sie die Nginx- und PHP-Dienste neu
sudo systemctl restart php-fpm
undsudo systemctl restart nginx
.Vor allem aber, Browser-Cache löschen oder in
incognito (Chrome)
oderPrivate Browsing (Firefox)
etc ...Hoffe diese hilfreiche und fröhliche Codierung
quelle
Meine Lösung war hinzuzufügen
zum Beispiel in meine benutzerdefinierte Konfigurationsdatei
etc/nginx/sites-available/example.com.conf
Das Hinzufügen zu
/etc/nginx/sites-available/default
hat bei mir nicht funktioniert.quelle
In meinem Fall, in dem ich nicht verwendet habe, habe
/etc/nginx/sites-available/default
ich eine andere Serverblock-Konfigurationsdatei (z. B. example.com) verwendet. Die einzige Möglichkeit, dieses Problem zu beheben, besteht darin, den symbolischen Link der Standard-Serverblock-Konfigurationsdatei zu entfernen:dann Nginx neu laden:
quelle
Ich habe mein Problem jetzt mit diesem Code gelöst (ändern Sie Ihre IP):
quelle
Was für mich mit Ubuntu 16.04 und PHP7 funktioniert hat, war das Löschen dieser Zeile
fastcgi_split_path_info ^(.+\.php)(/.+)$;
Danach wurden keine PHP-Dateien mehr heruntergeladen.
quelle
Kommentieren Sie den .php-Speicherort in / etc / nginx / sites-available / default aus
quelle
Wenn dir etwas anderes nicht hilft. Und vielleicht haben Sie Apache2 früher mit der Testdatei info.php installiert. Löschen Sie einfach die App-Daten (Cache, Cookie) für localhost.
quelle
Überprüfen Sie, ob Ihre Nginx-Konfigurationsdateierweiterung * .conf ist.
Zum Beispiel: /etc/nginx/conf.d/myfoo.conf
Ich habe die gleiche Situation. Nachdem ich meine Konfigurationsdatei von myfoo in myfoo.conf umbenannt habe, wurde dies behoben. Vergessen Sie nicht, nginx nach dem Umbenennen neu zu starten.
quelle
Öffnen Sie dann das Terminal und führen Sie den folgenden Befehl aus:
Fügen Sie dann den folgenden Code in die
default
Datei ein:Wenn eine Nichtübereinstimmung vorliegt, korrigieren Sie einfach Nginx und starten Sie es mit dem folgenden Befehl vom Terminal aus neu
Dann gehen Sie zum Browser und genießen Sie ...
quelle
Für mich war es die Zeile: fastcgi_pass unix: /var/run/php5-fpm.sock;
das musste nur sein: fastcgi_pass unix: /run/php5-fpm.sock;
quelle
Ich wollte gerade versuchen, dies zu beheben. Für mich war das Problem, dass Cloudflare die PHP-Datei zwischengespeichert hatte und mich immer wieder dazu brachte, sie herunterzuladen.
Die Lösung für mich bestand darin, den Cache in Cloudflare zu leeren.
quelle
Ich hatte das gleiche Problem, das es gelöst hat. Dieser Serverblock hat diesen Block auch über anderen Standortblöcken, wenn Sie Probleme mit dem Laden von CSS haben. Was ich meiner Site-verfügbaren Conf-Datei hinzugefügt habe.
quelle
Das ist es also, was in meinem Fall schließlich als Umschreiberegeln funktioniert hat, bei denen der Täter
die Nginx-Umschreiberegeln wie folgt geändert hat.
wird...
Anscheinend wurde die Anfrage ohne das letzte Schlüsselwort nicht neu gestartet, sodass sie nie das
.php
Standortsegment erreichte und einfach als Download interpretiert wurde.quelle
Für eine Aufzeichnung stellte ich fest, dass mein PHP-Fpm nicht lief und ich reparierte es mit
service php7.2-fpm stop
quelle
Noch etwas zu überprüfen: Wenn Sie den HTTPS-Zugriff vor dem Einrichten von PHP eingerichtet haben - ich habe certbot verwendet - müssen Sie die Änderungen in / etc / nginx / sites-available / default zweimal vornehmen, da es zwei gibt Serverblöcke (einer überwacht Port 80 und einer überwacht Port 443).
(Ich habe diesen Server hauptsächlich für E-Mail eingerichtet und hatte bei der ersten Installation von nginx keine Verwendung für PHP, nur um Certbot einfacher ausführen zu können.)
quelle