Pourquoi le fichier index.php est-il téléchargé au lieu d'être rendu par Nginx?


12

Je me tape la tête depuis 2 jours maintenant. Le problème est que le index.phpfichier est téléchargé au lieu d'être traité. J'utilise Ubuntu 14.04, Nginx, php5. C'est nginx/site-available/defaultcomme ci-dessous. J'ai ajouté l' index.phpentrée comme prescrit par de nombreux messages.

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

C'est nginx.confcomme ci-dessous ..

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

La solution a suivi jusqu'à présent.

  1. a ajouté l'entrée de index.php
  2. supprimé la ligne default_type application/octet-stream;dans nginx.conf
  3. décommenté les fastcgientrées du defaultfichier.

J'ai également essayé ces solutions sur le même problème, mais elles ne fonctionnaient pas pour moi.

Réponses:


35

Parfois, cela peut être aussi simple que de vider le cache du navigateur . S'il y avait une mauvaise configuration et qu'il s'agissait bien de télécharger des fichiers, après avoir corrigé la configuration, le navigateur doit être informé d'arrêter d'utiliser le téléchargement mis en cache.


7
Je ne peux pas croire que j'ai passé une heure là-dessus .. Bon conseil, +1
Allman

Je viens de me sauver d'un mal de tête sans fin
stevendesu

Tu es un sauveur!!
Srinivas Gowda

1
toujours valable en 2016 :))
Comforse

toujours valable en 2019
Blake Frederick

8

Assurez-vous d'avoir installé php-fpm,

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

éditez maintenant votre nginx/site-available/defaultfichier et location ~ \.php$bloquez

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

redémarrer le service nginx

sudo service nginx reload

et rechargez php5-fpm

sudo service php5-fpm restart


fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;semble être mssing dans ce bloc. Voir: stackoverflow.com/q/23443398/2010467
LiveWireBT

4
Mon bloc de localisation est identique à ceci, sauf avec include fastcgi.confau lieu de fastcgi_params(je suis sur ubuntu 14.10) et il télécharge toujours des fichiers PHP au lieu de les exécuter.
nnyby

0

Vous devez d'abord Remove cachedans votre navigateur

Ouvrez ensuite le terminal et exécutez la commande suivante:

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

Ajoutez ensuite le code suivant dans le defaultfichier:

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

En cas de non-concordance, corrigez et redémarrez Nginx à partir du terminal à l'aide de la commande suivante

sudo systemctl restart nginx

Ensuite, allez dans le navigateur et profitez ...


0

Vérifiez la version fpm php-mysqlinstallée sur le serveur et php-fpm.sockdans le fichier de configuration.

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

Les versions fpm devraient être les mêmes.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.