J'installe un site Web dans une gouttelette (Digital Ocean). J'ai un problème pour installer correctement NGINX avec PHP. 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'en exécuter .php c'est juste en train de le télécharger ... par exemple ... http://5.101.99.123/info.php
ça marche mais ... Si je vais à la page principale http://5.101.99.123
c'est télécharger 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és (#)
Réponses:
Essaye ça:
Éditer
/etc/nginx/sites-available/default
Décommentez les deux lignes d'écoute pour que nginx écoute sur le port 80 IPv4 et IPv6.
Laisser
server_name
tranquilleAjouter
index.php
à laindex
ligneDécommenter
location ~ \.php$ {}
Modifiez
/etc/php5/fpm/php.ini
et assurez-vous qu'ilcgi.fix_pathinfo
est défini sur0
Redémarrez nginx et php5-fpm
sudo service nginx restart && sudo service php5-fpm restart
Je viens de commencer à utiliser Linux il y a une semaine, donc j'espère vraiment vous aider à ce sujet. J'utilise l'éditeur de texte nano pour éditer les fichiers. lancez apt-get install nano si vous ne l'avez pas. Google dessus pour en savoir plus.
la source
service nginx restart && service php5-fpm restart
nginx -s reload
unix:/var/run/php5-fpm.sock;
convertir enunix:/var/run/php/php7.2-fpm.sock;
(un autre nidification/php
)Vous devez l'ajouter à / etc / nginx / sites-enabled / default pour exécuter les fichiers php sur le serveur Nginx:
la source
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
php7.0-fpm.pid
et nonphp7.0-fpm.sock
dans/var/run/php/
ce que cela veut dire?sudo service php7.0-fpm restart
. si la chaussette est manquante, cela indique que le processus php est en cours d'exécution./etc/nginx/conf.d/wordpress_https.conf
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).
la source
Mettez à jour nginx config / etc / nginx / sites-available / default ou votre fichier de configuration
si vous utilisez php7, utilisez ceci
si vous utilisez php5, utilisez ceci
Visitez ici pour plus de détails Détails ici
la source
include snippets/fastcgi-php.conf;
?Je vois beaucoup de solutions ci-dessus et beaucoup ont fonctionné correctement pour moi, mais je ne comprenais pas ce qu'elles faisaient et je craignais de simplement copier-coller le code, en particulier, fastcgi . Alors voici mes 2 cents,
Pour certains serveurs comme Apache, il existe un support intégré pour interpréter PHP et donc pas besoin de CGI.
Ce lien océanique numérique explique assez bien les étapes pour installer FPM et je n'écris pas les étapes nécessaires pour résoudre le problème du téléchargement des fichiers php au lieu du rendu puisque les autres réponses à mon humble avis sont plutôt bonnes.
la source
J'ai eu le même problème et aucune des réponses n'a résolu le problème.
L'Iran:
pour tester le fichier de configuration dans / etc / nginx / sites-available / default.
Cela m'a donné ces erreurs:
Je suis donc entré dans le fichier de configuration et sur la dernière ligne, il y avait
J'ai décommenté, exécuté à nouveau la commande de test et cela a fonctionné
la source
Cela a fonctionné pour moi.
1) Fichier MyApp
vi / etc / nginx / sites-available / myApp
Utilisateurs de PHP5
Changement
à
2) Configurer cgi.fix_pathinfo
Définissez cgi.fix_pathinfo sur 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
la source
Pour moi, cela m'a aidé à ajouter
?$query_string
à la fin de /index.php, comme ci-dessous:la source
Si l'une des réponses proposées ne fonctionne pas, essayez ceci:
1. corrigez www.conf dans etc / php5 / fpm / pool.d:
listen = 127.0.0.1:9000;(delete all line contain listen= )
2. corriger 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. corriger le 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
5. redémarrer le service php
6. profiter
J'utilise Ubuntu 14.04
la source
La réponse ci-dessus semblait trop commenter la solution que j'ai trouvée. Voici à quoi ressemblait mon fichier:
/ etc / nginx / sites-available / default
J'espère que cela aidera certaines personnes frustrées un dimanche après-midi (c:
la source
Les extraits ci-dessus ont fonctionné pour moi dans le cas de php7.2
la source
Pour tous ceux qui ont le même problème avec PHP 7, voici ce que j'ai fait pour que nginx exécute correctement les fichiers php dans CentOS 7, publié ici donc au cas où quelqu'un aurait le même problème:
Suivez pas à pas 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 disponibles, vous pouvez modifier en conséquence).Modifiez le
location
paramètre comme ci-dessous:default.conf :
Redémarrez les services Nginx et PHP
sudo systemctl restart php-fpm
etsudo systemctl restart nginx
.Dernier mais le plus important, effacez le cache du navigateur ou exécutez dans
incognito (Chrome)
ouPrivate Browsing (Firefox)
etc ...J'espère que ce codage utile et heureux
la source
Ma solution était d'ajouter
à 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.la source
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 dont j'ai pu résoudre ce problème est de supprimer le lien symbolique du fichier de configuration de bloc de serveur par défaut:puis recharger Nginx:
la source
J'ai résolu mon problème maintenant avec ce code (changez votre adresse IP):
la source
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 les fichiers php après cela.
la source
Décommentez l'emplacement .php dans / etc / nginx / sites-available / default
la source
Si rien d'autre ne vous aide. Et peut-être plus tôt vous avez installé apache2 avec le fichier de test info.php. Effacez simplement les données d'application (cache, cookie) pour l'hôte local.
la source
vérifiez que l'extension de votre fichier de configuration nginx est * .conf.
par exemple: /etc/nginx/conf.d/myfoo.conf
J'ai la même situation. Après avoir renommé mon fichier de configuration de myfoo en myfoo.conf, il a été corrigé. N'oubliez pas de redémarrer nginx après l'avoir renommé.
la source
Ensuite, ouvrez le terminal et exécutez la commande suivante:
Ajoutez ensuite le code suivant dans le
default
fichier:En cas de discordance, il suffit de corriger et de redémarrer Nginx à partir du terminal par la commande suivante
Ensuite, allez dans le navigateur et profitez ...
la source
Pour moi, c'était la ligne: fastcgi_pass unix: /var/run/php5-fpm.sock;
qui devait être simplement: fastcgi_pass unix: /run/php5-fpm.sock;
la source
J'étais sur le point de devenir fou en essayant de résoudre ce problème, pour moi, le problème était que Cloudflare avait mis en cache le fichier php et me faisait continuer à le télécharger.
Le correctif pour moi était de purger le cache sur Cloudflare.
la source
J'avais eu le même problème ce qui a résolu c'était ce bloc de serveur également avoir ce bloc au-dessus d'autres blocs d'emplacement si vous avez des problèmes de chargement de css. Ce que j'ai ajouté à mon fichier de configuration disponible sur les sites.
la source
C'est donc ce qui a finalement fonctionné dans mon cas en tant que règles de réécriture où le coupable a
changé les règles de réécriture nginx comme suit.
devient...
Apparemment, sans le dernier mot-clé, la requête n'a pas été redémarrée, elle n'a donc jamais atteint le
.php
segment d'emplacement et a simplement été interprétée comme un téléchargement -la source
pour un enregistrement, j'ai trouvé que mon php-fpm ne fonctionnait pas et je l'ai corrigé avec
service php7.2-fpm stop
la source
Une dernière chose à vérifier: si vous avez configuré l'accès HTTPS avant de configurer PHP - j'ai utilisé certbot - vous devrez effectuer les modifications dans / etc / nginx / sites-available / default deux fois car il y en aura deux blocs de serveur (un écoutant sur le port 80 et un écoutant sur le port 443).
(J'étais en train de configurer ce serveur principalement pour le courrier électronique et je n'avais aucune utilité pour PHP lorsque j'ai installé nginx pour la première fois, simplement pour exécuter certbot plus facilement.)
la source