J'installe un site Web dans une gouttelette (Digital Ocean). 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 je essayez de lancer un fichier .php, il est juste en train de le télécharger ... par exemple ... http://5.101.99.123/info.php
ça marche mais ... Si je vais au http://5.101.99.123
principal, c'est en train de 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
}
... Les autres "location" sont commentés (#)
Essaye ça:
/etc/nginx/sites-available/default
listen 80; ## listen for ipv4; this line is default and implied
listen [::]:80 default_server ipv6only=on; ## listen for ipv6
server_name
seul# Make site accessible (...)
server_name localhost;
index.php
à la ligne index
root /usr/share/nginx/www;
index index.php index.html index.htm;
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;
}
/etc/php5/fpm/php.ini
et assurez-vous que cgi.fix_pathinfo
est défini sur 0
Je viens tout juste de commencer à utiliser Linux il y a une semaine et j'espère vraiment pouvoir vous aider. J'utilise l'éditeur de texte nano pour éditer les fichiers. lancez apt-get install nano si vous ne l'avez pas. Google sur pour en savoir plus.
Vous devez ajouter ceci à/etc/nginx/sites-enabled/default pour exécuter les fichiers php sur Nginx Server:
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;
}
}
J'ai eu un problème similaire qui a été résolu en en vidant le cache du navigateur (a également bien fonctionné avec un navigateur différent).
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étails ici
Cela a fonctionné 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;
}
}
Utilisateurs PHP5
Changement
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
à
fastcgi_pass unix:/var/run/php5-fpm.sock;
2) Configurez 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) services de redémarrage
FPM
php5 Sudo service php5-fpm restart
php7 Sudo service php7.0-fpm restart
NGINX
Sudo service nginx restart
J'ai eu le même problème et aucune des réponses n'a résolu le problème.
Iran:
Sudo nginx -t
pour tester le fichier de configuration dans/etc/nginx/sites-available/default.
Cela 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
Alors je suis allé dans le fichier de configuration et sur la dernière ligne il y avait
#}
Je ne commentais pas, exécutais à nouveau la commande de test et cela fonctionnait
Pour moi, il a été utile d’ajouter ?$query_string
à la fin de /index.php, comme ci-dessous:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
Je vois beaucoup de solutions ci-dessus et beaucoup ont fonctionné correctement pour moi, mais je ne comprenais pas ce qu'elles faisaient et craignais simplement de copier-coller le code, plus précisément, 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 d'un CGI.
Ce lien Digital Ocean , explique très bien les étapes à suivre 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, les autres réponses à mon humble avis étant plutôt bonnes.
La réponse ci-dessus semblait trop commenter pour la solution que j'ai trouvée. 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 frustrées le dimanche après-midi (c:
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, exemple.com), et le seul moyen de résoudre ce problème consiste à supprimer le lien symbolique du fichier de configuration de bloc de serveur par défaut:
$ rm /etc/nginx/sites-enabled/default
puis recharger Nginx:
$ Sudo systemctl reload nginx
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;
dans 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.
Pour moi, c'était la ligne: fastcgi_pass unix: /var/run/php5-fpm.sock;
qui devait être juste: fastcgi_pass unix: /run/php5-fpm.sock;
Décommentez l'emplacement .php dans/etc/nginx/sites-available/default
Sudo vi/etc/nginx/sites-available/default:
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;
}
J'avais eu le même problème ce qui a été résolu ce bloc serveur ont également ce bloc au-dessus des autres blocs d'emplacement si vous avez des problèmes de chargement css. Ce que j'ai ajouté à mon fichier conf disponible sur les sites.
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Voilà donc ce qui a finalement fonctionné dans mon cas en tant que règles de réécriture où le coupable
J'ai modifié les règles de réécriture de nginx comme suit.
location /vendors { rewrite ^/vendors/?$ /vendors.php break; }
devient...
location /vendors { rewrite ^/vendors/?$ /vendors.php last; }
Apparemment, sans le mot-clé last , la demande n’a pas été relancée; elle n’a donc jamais atteint le segment de position .php
; elle a simplement été interprétée comme un téléchargement -
Si quelque chose ne vous aide pas. Et peut-être avez-vous précédemment installé Apache2 avec le fichier de test info.php. Il suffit d'effacer App Data (cache, cookie) pour localhost.
vérifiez que l'extension de fichier de votre configuration nginx est * .conf.
Par exemple: /etc/nginx/conf.d/myfoo.conf
J'ai la même situation. Après avoir renommé le fichier de configuration myfoo de myfoo en myfoo.conf, le problème a été résolu . N'oubliez pas de redémarrer nginx après l'avoir renommé.
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, posté ici, donc dans le 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 ni sites activés ni sites disponibles, vous pouvez modifier en conséquence).
Editez le paramètre location
comme ci-dessous:
default.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 Nginx et les services PHP Sudo systemctl restart php-fpm
et Sudo systemctl restart nginx
.
Dernier point, mais le plus important, effacez le cache du navigateur ou exécutez incognito (Chrome)
ou Private Browsing (Firefox)
etc ...
J'espère que ce codage utile et heureux
J'étais sur le point d'essayer de résoudre ce problème, pour moi le problème était que Cloudflare avait mis en cache le fichier php et continuait à me faire le télécharger.
La solution pour moi était de purger le cache sur Cloudflare.
J'ai résolu mon problème maintenant avec ce code (changez votre IP):
location / {
access_log off;
log_not_found off;
client_max_body_size 2000m;
client_body_buffer_size 512k;
proxy_buffering on;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
proxy_buffer_size 64k;
proxy_buffers 32 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_connect_timeout 300s;
proxy_http_version 1.1;
proxy_set_header Range "";
proxy_pass https://123.123.123.123:444;
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
Vous devez d'abord
Remove cache
dans votre navigateur
Ensuite, ouvrez 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 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;
}
}
Si tout ne correspond pas, corrigez et redémarrez Nginx à partir du terminal à l'aide de la commande suivante
Sudo systemctl redémarrer nginx
Ensuite, allez au navigateur et profitez ...
pour l'enregistrement, j'ai trouvé que mon php-fpm ne fonctionnait pas et je l'ai corrigé avec service php7.2-fpm stop