Der Browser lädt die Datei herunter, anstatt PHP-Dateien zu öffnen

Der Browser lädt die Datei herunter, anstatt PHP-Dateien zu öffnen

Ich poste also eine Antwort, weil ich nach der zweimaligen Neuinstallation die Dinge (aus meiner Sicht) ein wenig anders eingestellt habe. Wie ich oben sagte, stehe ich vor einem Dilemma, da keine meiner Konfigurationen mit den anderen Antworten übereinstimmt, die ich finden konnte. Zum Beispiel:

Mein /etc/nginx-Ordner ist grundsätzlich wie folgt aufgebaut:

|- /etc/nginx/
|  |- conf.d/
|  |  |- default.conf
|  |
|  |- fastcgi_params
|  |- mime.types
|  |- modules/ -> /usr/lib/nginx/modules
|  |- nginx.conf
|  |- scgi_params
|  |- uwsgi_params

Es gibt kein /sites-available oder /sites-enabled, wie überall zu sehen, das erwähnte fastcgi-php.conf ist tatsächlich ein fastcgi_params im Stammordner, mein Standard befindet sich daher nicht im Ordner „site-available“.

Hier sind die beiden Konfigurationsdateien, die ich jetzt habe (Domäne versteckt unter my_domain.com): Erstens: die nginx.conf (fast unberührt)

    user  nginx;

worker_processes  auto;

error_log  /var/log/nginx/error.log notice;

pid        /var/run/nginx.pid;


events {
    worker_connections  1024;

}

http {
    include       /etc/nginx/mime.types;
    include       /etc/nginx/sites-available/*.conf;
    default_type  application/octet-stream;


    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';



    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;

}

Zweitens die /etc/nginx/conf.d/default.conf

    server {
    listen       80;
    server_name  my_domain.com www.my_domain.com;

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

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/www.my_domain.com;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        #if (!-f $document_root$fastcgi_script_name) {
        #    return 404;
        #}
        root           /var/www/www.my_domain.com;
    #    fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi_params;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }
    

}

Ich habe auch eine Zeile hinzugefügt

text/php            php;

Zu den MIME-Typen denke ich auch daran, den Cache von my_domain in den von mir verwendeten Browsern (Firefox, Opera und Chrome) zu löschen.

Die Datei wird jedoch trotzdem heruntergeladen.

Was habe ich falsch gemacht ?

Bearbeiten: Da ich gerne ein blog.my_domain.com, shop.my_domain.com und forum._mydomain.com erstellen möchte, habe ich die Ordner /site-available und /site-enabled erstellt und beabsichtige, in jedem gleichnamigen Ordner unter /sites-available ein blog/forum/shop.my_domain.com.conf zu erstellen, warte aber auf eine funktionierende Konfiguration, um sie in nginx.conf sichtbar zu machen (mit einer Include-Zeile, richtig?).

Ich verstehe also nicht wirklich, wie diese beiden Ordner funktionieren. Die CNAME-Einträge der Subdomains sind auf my_domain.com eingestellt. Ich habe auch gelesen, dass man für diese Subwebsites einen Symlink erstellen kann, aber ich weiß nicht wirklich, von wo nach wo? Nochmals vielen Dank

Das Fehlerprotokoll sagt mir, dass die Verbindung zu /var/run/php/ verweigert wurde. Der Standardbenutzer ist www-data www-data, aber mein Standardbenutzer für nginx ist nginx (wenn ich ihn ändere, startet er nicht einmal). Soll ich einen

chown nginx:nginx /var/run/php/

?

Antwort1

Um PHP zu konfigurieren, muss auf Ihrem System eine Version von PHP-FPM installiert sein. Und fügen Sie diesen Codeausschnitt zu Ihrer Nginx-Konfiguration im serverBlock hinzu.

Sie müssen php5-fpmauf die Version wechseln, die Sie auf Ihrem System installiert haben.

  location ~ \.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;
  }

Antwort2

Ihnen fehlt ein PHP-Interpreter, NGINX hatein Artikelauf seinem Wiki über FPM.

verwandte Informationen