Nginx stellt .php-Dateien als Downloads bereit, anstatt sie auszuführen

Lesezeit: 8 Minuten

Nginx stellt php Dateien als Downloads bereit anstatt sie auszufuhren
Apeiron

Ich installiere eine Website in einem Droplet (Digital Ocean). Ich habe ein Problem mit der korrekten Installation von NGINX mit PHP. Ich habe ein Tutorial gemacht https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04 aber wenn ich versuche, eine .php-Datei auszuführen, wird sie nur heruntergeladen … zum Beispiel … http://5.101.99.123/info.php Es funktioniert, aber… Wenn ich zum Hauptschalter gehe http://5.101.99.123 es lädt 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

Meine /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 “Standorte” werden kommentiert …

.

  • Ja … Sie haben PHP-FPM mit Nginx nicht richtig eingerichtet. Das ist alles, was wir Ihnen sagen können, da Sie es uns nicht gezeigt haben irgendein deiner Konfig.

    – Brad

    31. August 2014 um 10:26 Uhr


  • welche datei willst du sehen? Danke @Brad

    – Apeiron

    31. August 2014 um 10:29 Uhr


  • Unabhängig davon, in welche Datei (oder Dateien) Sie Ihre Konfiguration einfügen. Der relevante Teil ist … wo Sie PHP-FPM in Ihrer Nginx-Konfiguration einrichten.

    – Brad

    31. August 2014 um 10:29 Uhr


  • nach etwa einer Stunde googeln habe ich das gefunden askubuntu.com/a/601996/89455 – Wenn Sie vorher eine schlechte Konfiguration hatten, versuchen Sie, den Cache zu leeren – hat hier funktioniert!

    – tm_lv

    10. Februar 2016 um 18:04 Uhr

  • Siehe ähnliche Frage/Antwort für PHP7 unter stackoverflow.com/q/42664080/287948

    – Peter Krauß

    13. Februar 2018 um 20:04 Uhr

Nginx stellt php Dateien als Downloads bereit anstatt sie auszufuhren
Jack M.

Versuche dies:

  1. Bearbeiten /etc/nginx/sites-available/default

  2. Entkommentieren Sie beide Listenzeilen, damit nginx auf Port 80 IPv4 und IPv6 lauscht.

    listen   80; ## listen for ipv4; this line is default and implied
    listen   [::]:80 default_server ipv6only=on; ## listen for ipv6
    
  3. Verlassen server_name allein

    # Make site accessible (...)
    server_name localhost;
    
  4. Addieren index.php zum index Linie

    root /usr/share/nginx/www;
    index index.php index.html index.htm;
    
  5. Kommentieren location ~ \.php$ {}

    # pass the PHP scripts to FastCGI server listening on (...)
    #
    location ~ \.php$ {
            try_files $uri =404;
            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;
    }
    
  6. Bearbeiten /etc/php5/fpm/php.ini und vergewissere dich cgi.fix_pathinfo ist eingestellt auf 0

  7. Starten Sie nginx und php5-fpm neu sudo service nginx restart && sudo service php5-fpm restart


Ich habe erst vor einer Woche angefangen, Linux zu verwenden, also hoffe ich wirklich, Ihnen dabei helfen zu können. Ich verwende 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.

  • service nginx restart && service php5-fpm restart

    – Herzog

    5. Januar 2016 um 23:34 Uhr


  • nginx -s reload

    – Herzog

    5. Januar 2016 um 23:40 Uhr


  • mit PHP7-fpm ist: Dienst php7.0-fpm neu starten

    – Alex

    15. Dezember 2016 um 9:30 Uhr

  • @Joy, habe deinen Vorschlag ausprobiert, aber es hat nicht funktioniert. Musste fastcgi_pass verwenden unix:/run/php/php7.0-fpm.sock;

    – jdstaerk

    19. März 2017 um 14:57 Uhr

  • Für php7.2: unix:/var/run/php5-fpm.sock; konvertieren zu unix:/var/run/php/php7.2-fpm.sock; (Noch eine Verschachtelung /php)

    – Oleg Reim

    26. Juli 2019 um 10:29 Uhr

Ich hatte ein ähnliches Problem, das durch behoben wurde den Browser-Cache leeren (funktionierte auch mit anderen Browsern).

  • Ich denke, der Neustart und der Inkognito-Modus haben mir geholfen. Vielen Dank für die Noobness, die wir tun können.

    – Swapnil Mhaske

    9. März 2017 um 13:32 Uhr

  • Vielen Dank. Du hast meinen Tag gerettet) Auch +1 für Inkognito!

    – Edi

    23. Juni 2017 um 12:17 Uhr

  • Das machte es für mich, auch nach stundenlangem Ausprobieren, viele andere Lösungsvorschläge.

    – Kleag

    16. Januar 2018 um 23:27 Uhr

  • Es war seltsam für mich, dass meine Site auf IE und Chrome funktionierte, während sie in Mozilla die Site herunterlud, anstatt sie auszuführen. Es war Mozillas Cache-Fehler.

    – Viktor Joras

    27. August 2018 um 9:03 Uhr

  • Du hast meine Zeit gerettet, Bruder.

    – Amir Kaftari

    20. November 2019 um 13:37 Uhr

1646634249 391 Nginx stellt php Dateien als Downloads bereit anstatt sie auszufuhren
rootx

Sie müssen dies zu /etc/nginx/sites-enabled/default hinzufügen, um PHP-Dateien auf Nginx Server auszuführen:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

  • Was ist SCRIPT_FILENAME?

    – mp3por

    20. Juni 2017 um 13:41 Uhr

  • Wenn Sie PHP 7.0 verwenden, ist dies richtig: fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;

    – Andreas Fuchs

    14. Oktober 2017 um 6:37 Uhr

  • @AndrewFox- mein Dateiname ist php7.0-fpm.pid und nicht php7.0-fpm.sock in /var/run/php/ was bedeutet das?

    – vsync

    29. April 2018 um 18:16 Uhr

  • @vsync versuch es. sudo service php7.0-fpm restart. Wenn Sock fehlt, zeigt dies an, dass der PHP-Prozess ausgeführt wird.

    – Schisme

    2. Mai 2018 um 8:59 Uhr

  • @Pathros – Ich habe festgestellt, dass WordPress (in meinem Fall) Serverkonfigurationsdateien in einem anderen Ordner hat, und diese mussten bearbeitet werden /etc/nginx/conf.d/wordpress_https.conf

    – vsync

    23. Juni 2018 um 14:52 Uhr

Nginx stellt php Dateien als Downloads bereit anstatt sie auszufuhren
Koda

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, den Code einfach zu kopieren und einzufügen, insbesondere fastcgi. Also hier sind meine 2 Cent,

  1. nginx ist ein Webserver (und nicht ein Anwendungsserver) und kann daher nur statische Seiten bedienen.
  2. Wann immer wir versuchen, eine .php-Datei zu rendern/zurückzugeben, zum Beispiel index.php, weiß nginx nicht, was zu tun ist, da es a einfach nicht verstehen kann .php Datei (oder für diese Angelegenheit jede Erweiterung abgesehen von einigen wenigen wie .html, .js usw., die statische Dateien sind)
  3. Um also andere Arten von Dateien auszuführen, brauchen wir etwas, das sich zwischen nginx und der Anwendung befindet (hier die PHP-Anwendung). Hier kommt Common Gateway Interface (CGI) ins Spiel. Es ist eine Software, die diese Kommunikation verwaltet. CGIs können in jeder möglichen Sprache Python (uWSGI), PHP (FPM) und sogar C implementiert werden. FastCGI ist im Grunde eine aktualisierte Version von CGI, die viel viel schneller als CGI ist.

Bei einigen Servern wie Apache ist die Unterstützung zum Interpretieren von PHP integriert, sodass kein CGI erforderlich ist.

Diese digitale Ozeanverbindungerklärt die Schritte zum Installieren von FPM ziemlich gut und ich schreibe nicht die Schritte, die erforderlich sind, um das Problem zu lösen, dass PHP-Dateien heruntergeladen werden, anstatt zu rendern, da die anderen Antworten meiner Meinung nach ziemlich gut sind.

Aktualisieren Sie die nginx-Konfiguration /etc/nginx/sites-available/default oder Ihre Konfigurationsdatei

Wenn Sie PHP7 verwenden, verwenden Sie dies

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;      
    }

Wenn Sie PHP5 verwenden, verwenden Sie dies

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php5-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
    }

Besuchen Sie hier für alle Details Details hier

  • Ich habe versucht, das hat bei mir nicht funktioniert, ich verwende Ubuntu 14.04 und PHP 7.0, wie kann ich dieses Problem beheben?

    – Kishore

    6. November 2018 um 2:34 Uhr

  • Der obige freigegebene Link “vollständiges Detail” ist defekt

    – Kishore

    6. November 2018 um 2:35 Uhr

  • Was bedeutet include snippets/fastcgi-php.conf;?

    –Timo

    23. Februar 2019 um 7:47 Uhr

1646634250 282 Nginx stellt php Dateien als Downloads bereit anstatt sie auszufuhren
Björn Lindholm Hansen

Ich hatte das gleiche Problem und keine der Antworten löste das Problem.

Ich lief:

sudo nginx -t

um die Konfigurationsdatei unter /etc/nginx/sites-available/default zu testen.

Es gab mir diese Fehler:

nginx: [emerg] unexpected end of file, expecting "}" in /etc/nginx/sites-enabled/default:115
nginx: configuration file /etc/nginx/nginx.conf test failed

Also ging ich in die Konfigurationsdatei und in der letzten Zeile war da

#}

Ich habe den Kommentar entfernt, den Testbefehl erneut ausgeführt und es hat funktioniert

  • Ich habe versucht, das hat bei mir nicht funktioniert, ich verwende Ubuntu 14.04 und PHP 7.0, wie kann ich dieses Problem beheben?

    – Kishore

    6. November 2018 um 2:34 Uhr

  • Der obige freigegebene Link “vollständiges Detail” ist defekt

    – Kishore

    6. November 2018 um 2:35 Uhr

  • Was bedeutet include snippets/fastcgi-php.conf;?

    –Timo

    23. Februar 2019 um 7:47 Uhr

1646634250 978 Nginx stellt php Dateien als Downloads bereit anstatt sie auszufuhren
Schlank

Das hat bei mir funktioniert.

1) MyApp-Datei

vi /etc/nginx/sites-available/myApp

server {
  listen 80;
  listen [::]:80;

  root /var/www/myApp;
  index index.php index.html index.htm;

  location ~ \.php$ {
      try_files $uri =404;
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass unix:/run/php/php7.0-fpm.sock;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include fastcgi_params;
      }
}

PHP5-Benutzer

Ändern

fastcgi_pass unix:/run/php/php7.0-fpm.sock;

zu

fastcgi_pass unix:/var/run/php5-fpm.sock;

2) cgi.fix_pathinfo konfigurieren

Setzen Sie cgi.fix_pathinfo auf 0

Standort:

PHP5 /etc/php5/fpm/php.ini

PHP7 /etc/php/7.0/fpm/php.ini


3) Dienste neu starten

FPM

php5 sudo service php5-fpm restart

php7 sudo service php7.0-fpm restart

NGINX

sudo service nginx restart

  • fastcgi_pass unix:/run/php/php7.0-fpm.sock; ist falsch. Es sollte /var/run/php/php7.0-fpm.sock sein; und Sie müssen die angegebene PHP-Version mit dem aktualisieren, was Sie installiert haben, zum Beispiel: /var/run/php/php7.2-fpm.sock;

    – VanAlbert

    3. Juli 2019 um 12:51 Uhr

963540cookie-checkNginx stellt .php-Dateien als Downloads bereit, anstatt sie auszuführen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy