NGINX sert.fichiers php comme téléchargements, au lieu de les exécuter

J'installe un site Web dans une gouttelette (océan numérique). J'ai un problème pour installer NGINX avec PHP correctement. J'ai fait un tutoriel https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04 mais quand j'essaie d'exécuter certains .fichier php il est juste de le télécharger... exemple... http://5.101.99.123/info.php ça marche mais... Si je vais à la main http://5.101.99.123 il télécharge mon index.php: /

Une idée?

-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

Mon /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
            }

... D'autres "localisation" sont commentées (#)

91
demandé sur Apeiron 2014-08-31 14:24:17

18 réponses

, Essayez ceci:

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

  2. Décommentez les deux lignes d'écoute pour faire écouter nginx sur le port 80 IPv4 et IPv6.

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

    # Make site accessible (...)
    server_name localhost;
    
  4. Ajouter index.php à la ligne index

    root /usr/share/nginx/www;
    index index.php index.html index.htm;
    
  5. Décommenter 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. Modifiez /etc/php5/fpm/php.ini et assurez-vous que cgi.fix_pathinfo est défini sur 0

  7. Redémarrer nginx et php5-fpm (si vous ne savez pas comment le faire, redémarrez l' serveur)


Je viens de commencer à utiliser Linux il y a une semaine, donc j'espère vraiment vous aider à ce sujet. J'utilise Nano text editor pour éditer les fichiers. exécuter apt-get install nano si vous ne l'avez pas. Google pour en savoir plus.

90
répondu Jack M. 2018-04-29 18:28:53

Vous devez ajouter ceci à /etc / nginx / sites-enabled / default pour exécuter des fichiers php sur le serveur Nginx:

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;
    }
}
29
répondu rootx 2018-09-26 13:36:57

J'ai eu un problème similaire qui a été résolu en vidant le cache du navigateur (a également bien fonctionné avec un navigateur différent).

17
répondu np8 2017-01-24 20:51:39

Mettez à jour nginx config / etc / nginx / sites-available / default ou votre fichier de configuration

Si vous utilisez php7 utilisez ceci

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

Si vous utilisez php5 utilisez ceci

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

Visitez ici pour plus de détails détail ici

9
répondu M Arfan 2017-03-14 11:58:20

J'ai eu le même problème et aucune réponse n'a résolu le problème.

, j'ai couru:

sudo nginx -t

Pour tester le fichier de configuration dans /etc / nginx / sites-available / default.

, Il m'a donné ces erreurs:

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

Donc je suis allé dans le fichier de configuration et sur la dernière ligne il y avait

#}

J'ai décommenté, relancé la commande de test et cela a fonctionné

5
répondu Bjorn Lindholm Hansen 2017-07-01 18:05:47

Ce workded pour moi.

1) Fichier MyApp

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 utilisateurs

Changer

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

À

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

2) Configurer cgi.fix_pathinfo

Définir cgi.fix_pathinfo à 0

Emplacement:

PHP5 /etc/php5/fpm/php.ini

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


3) redémarrer les services

FPM

Php5 sudo service php5-fpm restart

Php7 sudo service php7.0-fpm restart

NGINX

sudo service nginx restart
5
répondu Sharif El Shobkshy 2017-08-20 19:46:35

Si aucune des réponses proposées ne fonctionne pas, essayez ceci:

1.fix www.conf dans etc/php5/fpm/pool.d:

listen = 127.0.0.1:9000;(delete all line contain listen= )

2.corrigé de nginx.conf dans/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. correction du fichier par défaut dans etc/nginx/site-available

location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; }

4.redémarrer le service nginx

Sudo service NGINX redémarrer

5.redémarrer le service php

Service php5-fpm redémarrer

6.profitez

Créer tout fichier php dans /usr/share/nginx/html et exécuter en "nom_serveur/nom_fichier.php" (server_name dépend de votre config, normalement est localhost, file_name.php est le nom du fichier créé dans / usr / share / nginx / html).

J'utilise Ubuntu 14.04

3
répondu huuthang 2016-05-30 13:58:09

La réponse ci-dessus semblait trop commenter pour la solution que j'ai atteinte. Voici à quoi ressemblait mon fichier:

/etc/nginx/sites-available/default

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

J'espère que cela aidera certaines personnes qui sont frustrées un dimanche après-midi (c:

2
répondu Benjamin McFerren 2015-05-17 23:24:22

Pour moi, il a aidé à ajouter ?$query_string à la fin de /index.php, comme ci-dessous:

location / {
        try_files $uri $uri/ /index.php?$query_string;
}
2
répondu Tomeg 2017-11-21 23:35:29

Ma solution était d'ajouter

    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;

Pour mon fichier de configuration personnalisé, par exemple etc/nginx/sites-available/example.com.conf

Ajouter à /etc/nginx/sites-available/default n'a pas fonctionné pour moi.

1
répondu Kelvin Low Ee Hahn 2017-06-09 09:33:01

Ce qui a fonctionné pour moi avec Ubuntu 16.04, et php7 supprimait cette ligne

fastcgi_split_path_info ^(.+\.php)(/.+)$;

Il a cessé de télécharger des fichiers php après cela.

0
répondu briankip 2016-05-26 10:04:33

Pour toute personne ayant le même problème avec PHP 7, c'est ce que j'ai fait pour que nginx exécute correctement les fichiers php dans CentOS 7, posté ici donc au cas où quelqu'un aurait le même problème:

  • Suivez, étape par étape, ce document sur Digital Ocean.

  • Ouvrez le /etc/nginx/conf.d/default.conf (par défaut, je n'ai pas de sites activés ni de sites disponibles, vous pouvez modifier en conséquence).

  • Modifier les location paramètres comme ci-dessous:

par défaut.conf :

location ~ \.php$ {
    try_files $uri =404;
    #fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;

    #instruct nginx execute php7 files instead download them :D
    fastcgi_pass unix:/var/run/php-fpm/www.sock;

    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}
  • Redémarrez les services Nginx et PHP sudo systemctl restart php-fpm et sudo systemctl restart nginx.

  • Dernier mais le plus important, effacer le cache du navigateur ou en cours d'exécution dans incognito (Chrome) ou Private Browsing (Firefox) etc...

Espérons que ce codage utile et heureux

0
répondu SonDang 2017-02-11 07:43:19

Décommenter le .emplacement php dans/etc/nginx / sites-available / default

Sudo vi / etc / nginx / sites-disponible / par défaut:

location ~ \.php$ {
            include snippets/fastcgi-php.conf;

            # With php5-cgi alone:
    #       fastcgi_pass 127.0.0.1:9000;
            # With php5-fpm:
            fastcgi_pass unix:/var/run/php5-fpm.sock;
    }
0
répondu Manivannan Murugavel 2017-03-16 09:11:21

Si quelque chose d'autre ne vous aide pas. Et peut-être plus tôt vous avez installé apache2 avec info.fichier de test php. Il suffit d'Effacer les données de L'application (cache,cookie) pour localhost.

0
répondu Al Che 2017-07-10 13:51:40

Vérifiez que votre extension de fichier nginx config est *.conf.
par exemple: /etc/nginx/conf.d / myfoo.conf

J'ai la même situation. Après avoir renommé le fichier my config de myfoo à myfoo.conf, il fixe. N'oubliez pas de redémarrer nginx après l'avoir renommé.

0
répondu Ivan 2017-07-18 08:48:47

Vous devez d'Abord Remove cache dans votre navigateur

Puis ouvrez 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 fichier default:

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, il suffit de corriger et de redémarrer Nginx à partir du terminal par la commande suivante

Sudo systemctl redémarrer nginx

Ensuite, allez dans le navigateur et profitez-en ...

0
répondu Sanaulla 2017-08-08 08:56:01

Pour moi, c'était la ligne: fastcgi_pass unix: / var / run / php5-fpm.chaussette;

, Qui devait être juste: fastcgi_pass unix: / run / php5-fpm.chaussette;

0
répondu Dongato 2018-05-26 14:18:18

Dans mon cas, je n'utilisais pas /etc/nginx/sites-available/default j'utilisais un fichier de configuration de bloc de serveur différent (par exemple example.com), et la seule façon de résoudre ce problème est de supprimer le lien symbolique du fichier de configuration du bloc de serveur par défaut:

$ rm /etc/nginx/sites-enabled/default

Puis recharger Nginx:

$ sudo systemctl reload nginx
0
répondu Waqleh 2018-08-08 19:25:05