Utilisation du serveur Web nginx et php. nginx fonctionne, je vois «Bienvenue à nginx! mais je reçois un 'accès refusé' lorsque j'essaie d'accéder à une page php. J'ai aussi installé php-fastcgi.
Voici mon conf par défaut nginx:
# 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;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
J'ai activé security.limit_extensions = .php .php3 .php4 .php5 .html
et listen = /var/run/php5-fpm.sock
dans /etc/php-fpm.d/www.conf et cgi.fix_pathinfo = 0
dans /etc/php5/fpm/php.ini
J'ai redémarré nginx et php5-fpm.
Merci pour ton aide.
Faites comme ceci où vous avez votre emplacement secondaire
location / {
try_files $uri $uri/ =404;
root /path/to/your/www;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Ces 2 paramètres sont la sauce magique:
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Je connais certains scénarios possibles lorsque nginx et php ne peuvent pas accéder aux fichiers:
Le processus php-fpm
le plus probable est exécuté par un utilisateur qui n'a pas le droit de lecture sur les fichiers .php correspondants. Cela donne l'erreur simple Access denied.
Le processus nginx
ne dispose pas des autorisations de lecture et de cheminement sur le répertoire root
contenant les fichiers de sites. Cela donne l'erreur 403 Forbidden
.
Le processus php-fpm
ne peut pas parcourir le chemin absolu du répertoire root
. Cela donne l'erreur File not found
.
Puisque l'auteur mentionne, ce problème n'apparaît que lors de l'accès aux fichiers php, je dirais que le premier scénario s'applique ici.
Je crois que le cas est que nginx
est exécuté en tant qu'utilisateur et php-fpm
en tant qu'autre, seul l'utilisateur php-fpm
a été oublié pour donner un accès en lecture.
Veuillez vérifier votre fichier fastcgi_params et le modifier en conséquence pour cet article https://askubuntu.com/questions/164627/nginx-php-fpm-access-denied-error
J'ai résolu mon problème en utilisant la méthode ci-dessus.
Si vous essayez d'utiliser NGINX pour analyser HTML en tant que PHP et que vous obtenez une erreur Access denied
, vous devez modifier le paramètre de configuration PHP.
Sur Ubuntu 16, le fichier à mettre à jour est au format /etc/php/7.0/fpm/pool.d/www.conf
.
Aller à la ligne où il est écrit ;security.limit_extensions = .php .php3 .php4 .php5 .php7
Remplacez-le par ce security.limit_extensions = .php .html
. Notez que le point-virgule a été supprimé.
Puis redémarrez PHP Sudo systemctl restart php7.0-fpm
. Le problème devrait être corrigé.
Pour plus d'informations, consultez ce guide plus détaillé: Correction de l'erreur "accès refusé" lors de l'analyse HTML en tant que PHP avec Nginx