Warum wird die index.php heruntergeladen und nicht von Nginx gerendert?

11

Ich habe jetzt seit 2 Tagen meinen Kopf geschlagen. Das Problem ist, dass das index.phpheruntergeladen wird, anstatt verarbeitet zu werden. Ich verwende Ubuntu 14.04, Nginx, php5. Das nginx/site-available/defaultist wie unten. Ich habe den index.phpEintrag wie in vielen Beiträgen vorgeschrieben hinzugefügt .

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

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

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
        # Uncomment to enable naxsi on this location
        # include /etc/nginx/naxsi.rules
    }


    # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
    #location /RequestDenied {
    #   proxy_pass http://127.0.0.1:8080;    
    #}

    #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 /usr/share/nginx/html;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #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;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #   deny all;
    #}
}



    #server {
    #   listen 8000;
    #   listen somename:8080;
    #   server_name somename alias another.alias;
    #   root html;
    #   index index.php index.html index.htm;
    #
    #   location / {
    #       try_files $uri $uri/ =404;
    #   }
    #}


    # HTTPS server
    #
    #server {
    #   listen 443;
    #   server_name localhost;
    #
    #   root html;
    #   index index.php index.html index.htm;
    #
    #   ssl on;
    #   ssl_certificate cert.pem;
    #   ssl_certificate_key cert.key;
    #
    #   ssl_session_timeout 5m;
    #
    #   ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    #   ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
    #   ssl_prefer_server_ciphers on;
    #
    #   location / {
    #       try_files $uri $uri/ =404;
    #   }
    #}

Das nginx.confist wie unten ..

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
    }

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # nginx-naxsi config
    ##
    # Uncomment it if you installed nginx-naxsi
    ##

    #include /etc/nginx/naxsi_core.rules;

    ##
    # nginx-passenger config
    ##
    # Uncomment it if you installed nginx-passenger
    ##

    #passenger_root /usr;
    #passenger_ruby /usr/bin/ruby;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}


#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
# 
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
#}

Lösung folgte bis jetzt.

  1. fügte den Eintrag von hinzu index.php
  2. hat die Zeile default_type application/octet-stream;in nginx.conf gelöscht
  3. kommentierte die fastcgiEinträge in der defaultDatei.

Ich habe diese Lösung auch für dasselbe Problem ausprobiert, aber sie hat bei mir nicht funktioniert.

irshad.ahmad
quelle

Antworten:

33

Manchmal kann es so einfach sein , den Browser-Cache zu leeren . Wenn es eine Fehlkonfiguration gab und tatsächlich Dateien heruntergeladen wurden, muss der Browser nach dem Korrigieren der Konfiguration angewiesen werden, den zwischengespeicherten Download nicht mehr zu verwenden.

Jan Żankowski
quelle
7
Ich kann nicht glauben, dass ich eine Stunde damit verbracht habe. Guter Tipp, +1
Allman
Gerade mich vor endlosen Kopfschmerzen gerettet
stevendesu
Du bist ein Lebensretter!!
Srinivas Gowda
1
noch gültig in 2016 :))
Comforse
noch gültig im Jahr 2019
Blake Frederick
8

Stellen Sie sicher, dass Sie php-fpm installiert haben.

sudo apt-get update && sudo apt-get install php5-fpm

Bearbeiten Sie jetzt Ihre nginx/site-available/defaultDatei und location ~ \.php$blockieren Sie

 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;
        }

Starten Sie den Nginx-Dienst neu

sudo service nginx reload

und lade php5-fpm neu

sudo service php5-fpm restart

Alok Yadav
quelle
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;scheint in diesem Block zu mssen. Siehe: stackoverflow.com/q/23443398/2010467
LiveWireBT
4
Mein Standortblock ist mit diesem identisch, außer mit include fastcgi.confanstelle von fastcgi_params(ich bin auf Ubuntu 14.10) und es werden immer noch PHP-Dateien heruntergeladen, anstatt sie auszuführen.
Nnyby
0

Zuerst müssen Sie Remove cachein Ihrem Browser

Öffnen Sie dann das Terminal und führen Sie den folgenden Befehl aus:

sudo apt-get install php-gettext
sudo nano /etc/nginx/sites-available/default

Fügen Sie dann den folgenden Code in die defaultDatei ein:

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

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

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    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;
    }
}

Wenn eine Nichtübereinstimmung vorliegt, korrigieren Sie einfach Nginx und starten Sie es mit dem folgenden Befehl vom Terminal aus neu

sudo systemctl nginx neu starten

Dann gehen Sie zum Browser und genießen Sie ...

Sanaulla
quelle
0

Überprüfen Sie die fpm php-mysqlauf dem Server und php-fpm.sockin der Konfigurationsdatei installierte Version .

sudo nano /etc/nginx/sites-enabled/example.com

Die fpm-Versionen sollten gleich sein.

Samson Galin
quelle