Leí varias entradas sobre por qué PHP-FPM podría darme permiso denegado, pero no puedo resolverlo.
Los registros de error se leen como:
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/"
Estoy un poco pero perdido:
- He configurado / var / lib / nginx / tmp en ec2-user (incluso +777 todo para verificar)
- He configurado /tmp/php-fpm.sock en ec2-user
- el archivo nginx conf está configurado en ec2-user
- php-conf está configurado para usuario y grupo ec2-user
- ps aux proporciona ec2-user en todos los procesos php-fpm y nginx
Mi configuración de Nginx incluye muchos archivos, la configuración básica es:
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;
}
mi /etc/nginx/conf.d/ está vacío mi /mnt/web/nginx/conf.d contiene MUCHAS configuraciones de sitios web que incluyen "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;
}
Mi /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
ACTUALIZACIÓN: encontró el problema, póngalo en la respuesta
nginx
amazon-ec2
php-fpm
Edelwater
fuente
fuente
Respuestas:
Había configurado / var / lib / nginx / tmp en ec2-user / ec2-user (incluso +777 todo para verificar)
Pero ... también tuve que configurar / var / lib / nginx en ec2-user / ec2-user
... después también chown / chgrp la carpeta padre nginx: no más errores.
Me tomó algunas horas ...
fuente
chown -Rf www-data:www-data /var/lib/nginx
trabajó para mi. no necesitaba chmod nada.Esto generalmente sucede. Cuando la
user
configuración en nginx.conf se cambia dea otra cosa En este caso,
El comando chmod no es necesario según el comentario de Chris, y podría abrir un agujero de seguridad.
Solución:
Verifique la propiedad actual de usuarios y grupos en / var / lib / nginx.
Esto le indica que un usuario y un grupo posiblemente inexistente llamado
nginx
propietario de esta carpeta. Esto evita la carga de archivos.Cambie la propiedad de la carpeta al usuario definido en nginx.conf en este caso
ec2-user
(es posible que no se requiera sudo).Verifique que realmente haya cambiado.
El error de permiso denegado ahora debería desaparecer. Verifique el error.log (basado en la ubicación nginx.conf error_log).
Si eso no funciona, es posible que deba volver a cargar nginx y php-fpm.
fuente
Ninguna de las otras soluciones funcionó para mí, pero encontré que esto funciona:
Fuente
fuente
Tengo un problema similar con la carga de archivos. error 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"
El problema estaba relacionado solo con el permiso, solo lo configuré
chmod -R 755 /var/lib/nginx
y las cosas funcionaronfuente
Acabo de resolver mi problema con los permisos. La forma más fácil y más simple era no ejecutar php-fpm o nginx como sudo (superusuario). Lo que deberías hacer es:
chown yourUserName:yourUserName /var/log/nginx/error.log
chown yourUserName:yourUserName -R /var/www
Al no usar root no tuve que cambiar el usuario o grupo php-fpm ni ningún usuario o grupo que escucha. Asegúrese de comentar también nginx.conf 'usuario', ya que será el nombre del usuario actual.
fuente
En lugar de editar permisos en / var / lib / nginx / lo que sea, ¿no tendría más sentido simplemente decirle a nginx que use una ruta diferente como / tmp / nginx? Esto solucionó el problema para mí:
Los permisos / tmp / nginx deben ser de preferencia 700 (lo cual no debería ser un problema siempre que el propietario sea el mismo usuario especificado en la directiva /etc/nginx/nginx.conf 'user') o 770 si por alguna razón necesita tener un propietario de archivo diferente y nginx para realizar E / S a través de permisos de grupo. Nunca he visto eso pero quién sabe.
En centos7, edite /etc/nginx/nginx.conf para indicarle a nginx que use ese nuevo directorio para los cuerpos de los clientes.
y reinicie nginx (nuevamente centos7)
fuente