Maison >développement back-end >tutoriel php >Pourquoi Nginx télécharge-t-il des fichiers .php au lieu de les exécuter et comment puis-je y remédier ?
Nginx sert les fichiers .php en tant que téléchargements au lieu de les exécuter
Dans ce scénario, Nginx ne gère pas correctement les fichiers .php, les téléchargeant plutôt que les exécuter. Pour remédier à ce problème, certains ajustements de configuration doivent être effectués.
1. Décommentez les lignes d'écoute :
Modifiez /etc/nginx/sites-available/default pour permettre à Nginx d'écouter sur les ports IPv4 et IPv6 80 :
listen 80; ## listen for ipv4; listen [::]:80 default_server ipv6only=on; ## listen for ipv6
2 . Définir le nom du serveur :
Assurez-vous que le nom_serveur reflète le nom réel du serveur, tel que nom_serveur exemple.com ;.
3. Ajoutez index.php à la ligne d'index :
Dans la directive racine, ajoutez index.php à la liste des fichiers d'index :
root /var/www/html; index index.php index.html index.htm;
4. Décommentez le bloc d'emplacement PHP :
Décommentez le bloc d'emplacement ~ .php$ {} pour activer le traitement PHP :
location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+?\.php)(/.+)?$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }
5. Désactivez Pathinfo Fix dans php.ini :
Modifiez /etc/php5/fpm/php.ini et définissez cgi.fix_pathinfo = 0.
6. Redémarrez Nginx et PHP-FPM :
Redémarrez Nginx et PHP-FPM :
sudo service nginx restart && sudo service php5-fpm restart
Configuration révisée :
server { listen 80; listen [::]:80 default_server ipv6only=on; root /var/www/html; index index.php index.html index.htm; # Make site accessible from http://example.com/ server_name example.com; location ~ \.php$ { try_files $uri $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; } location / { try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules }
Après avoir implémenté ces modifications, Nginx devrait exécuter correctement les fichiers .php.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!