J'ai lu plusieurs entrées sur les raisons pour lesquelles PHP-FPM pourrait me donner une autorisation refusée mais je ne peux pas le résoudre.
Les journaux d'erreurs se lisent comme suit:
2013/04/20 23:33:28 [crit] 15479#0: *6 open() "/var/lib/nginx/tmp/fastcgi
/2/00/0000000002" failed (13: Permission denied) while reading upstream, client:
99.999.999.999, server: example.net, request: "GET /wp-admin/ HTTP/1.1",
upstream: "fastcgi://unix:/tmp/php-fpm.sock:", host: "example.net", referrer:
"http://example.net/"
Je suis un peu mais perdu:
- J'ai mis le / var / lib / nginx / tmp à ec2-user (j'ai même +777 tout pour vérifier)
- J'ai défini le /tmp/php-fpm.sock sur ec2-user
- le fichier de conf nginx est défini sur ec2-user
- php-conf est défini sur user et group ec2-user
- ps aux donne à ec2-user sur tous les processus php-fpm et nginx
Ma configuration Nginx comprend beaucoup de fichiers, la conf de base est:
user ec2-user ec2-user;
worker_processes 5;
error_log /opt/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /opt/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
client_max_body_size 13m;
index index.php index.html index.htm;
upstream php {
server unix:/tmp/php-fpm.sock;
}
include /etc/nginx/conf.d/*.conf;
include /mnt/web/nginx/conf.d/*.conf;
}
mon /etc/nginx/conf.d/ est vide mon /mnt/web/nginx/conf.d contient BEAUCOUP de configurations de site Web qui incluent toutes "wordpress.conf":
location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 24h;
log_not_found off;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php;
}
Mon /opt/php/etc/php-fpm.conf:
include=/opt/php/etc/fpm.d/*.conf
pid = run/php-fpm.pid
error_log = log/php-fpm.log
log_level = notice
[www]
listen = /tmp/php-fpm.sock
user = ec2-user
group = ec2-user
pm = dynamic
pm.max_children = 250
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
pm.status_path = /fpm-status
ping.path = /fpm-ping
slowlog = log/$pool.log.slow
catch_workers_output = yes
MISE À JOUR: a trouvé le problème, mettez-le dans la réponse
nginx
amazon-ec2
php-fpm
edelwater
la source
la source
Réponses:
J'avais réglé le / var / lib / nginx / tmp sur ec2-user / ec2-user (j'ai même +777 tout pour vérifier)
Mais ... j'ai aussi dû définir / var / lib / nginx sur ec2-user / ec2-user
... après avoir également affiché / chgrp le dossier parent nginx: plus d'erreurs.
Ça m'a pris quelques heures ...
la source
chown -Rf www-data:www-data /var/lib/nginx
travaillé pour moi. n'avait pas besoin de chmod quoi que ce soit.Cela se produit généralement. Lorsque le
user
paramètre dans nginx.conf passe deà autre chose. Dans ce cas,
La commande chmod n'est pas nécessaire selon le commentaire de Chris et pourrait ouvrir un trou de sécurité.
Solution:
Vérifiez la propriété actuelle de l'utilisateur et du groupe sur / var / lib / nginx.
Cela vous indique qu'un utilisateur et un groupe éventuellement inexistants nommés sont
nginx
propriétaires de ce dossier. Cela empêche le téléchargement de fichiers.Modifiez la propriété du dossier à l'utilisateur défini dans nginx.conf dans ce cas
ec2-user
(sudo peut ne pas être requis).Vérifiez qu'il a réellement changé.
L'erreur d'autorisation refusée devrait maintenant disparaître. Vérifiez le fichier error.log (basé sur l'emplacement nginx.conf error_log).
Si cela ne fonctionne pas, vous devrez peut-être recharger nginx et php-fpm.
la source
Aucune des autres solutions n'a fonctionné pour moi, mais j'ai trouvé que cela fonctionnait:
La source
la source
J'ai le même problème avec le téléchargement de fichiers. erreur nginx 500
2015/07/05 03:50:36 [crit] 3656#0: *7 open() "/var/lib/nginx/tmp/client_body/0000000007" failed (13: Permission denied), client: 10.0.2.2, server: www.test.com, request: "POST /api/v1/users HTTP/1.1", host: "test"
Le problème était lié à l'autorisation uniquement, je viens de régler
chmod -R 755 /var/lib/nginx
et les choses ont fonctionné!la source
Je viens de résoudre mon problème avec les autorisations. Le moyen le plus simple et le plus simple était de ne pas exécuter php-fpm ou nginx en tant que sudo (super utilisateur). Ce que vous auriez à faire, c'est:
chown yourUserName:yourUserName /var/log/nginx/error.log
chown yourUserName:yourUserName -R /var/www
En n'utilisant pas root, je n'ai pas eu à changer d'utilisateur ou de groupe php-fpm ou tout utilisateur ou groupe d'écoute. Assurez-vous également de commenter nginx.conf 'user' car ce sera le nom de l'utilisateur actuel.
la source
Au lieu de modifier les autorisations sur / var / lib / nginx / peu importe, ne serait-il pas plus logique de simplement dire à nginx d'utiliser un chemin différent comme / tmp / nginx? Cela a résolu le problème pour moi:
Les autorisations / tmp / nginx doivent être de préférence 700 (ce qui ne devrait pas être un problème tant que le propriétaire est le même utilisateur spécifié dans la directive «utilisateur» /etc/nginx/nginx.conf) ou 770 si, pour une raison quelconque, vous devez avoir un propriétaire de fichier et un nginx différents pour effectuer des E / S via des autorisations de groupe. Je n'ai jamais vu ça mais qui sait.
Sur centos7, modifiez /etc/nginx/nginx.conf pour indiquer à nginx d'utiliser ce nouveau répertoire pour les corps des clients
et redémarrez nginx (à nouveau centos7)
la source