Tengo un script PHP que crea un directorio y genera una imagen en el directorio. Esto funcionaba bien con Apache, pero recientemente decidimos cambiar a NGINX para hacer un mayor uso de nuestra RAM limitada. Estoy usando el comando PHP mkdir () para crear el directorio:
mkdir(dirname($path['image']['server']), 0755, true);
Después del cambio a NGINX, recibo la siguiente advertencia:
Warning: mkdir(): Permission denied in ...
Ya he verificado todos los permisos de los directorios principales, así que he determinado que probablemente necesito cambiar el 'usuario' de NGINX o PHP-FPM, pero no estoy seguro de cómo hacerlo (nunca tuve que especificar el usuario permisos para APACHE). Parece que no puedo encontrar mucha información sobre esto. ¡Cualquier ayuda sería genial!
(Nota: además de este pequeño problema, el cambio a NGINX ha sido bastante sencillo; lo estoy usando por primera vez y, literalmente, solo tardó unos 10 minutos en comenzar a funcionar con NGINX. Ahora solo estoy planchando fuera de las torceduras.)
fuente
nginx.conf
ywww.conf
por defecto IIRC.Respuestas:
Ejecute nginx y php-fpm como www: www
1. Nginx
Edite nginx.conf y configure el usuario en
www www;
2. PHP-FPM
Edite php-fpm.conf y configure el usuario y el grupo en
www
.fuente
user www-data
). Sin embargo, no veo ningún usuario definido enphp-fpm.conf
. ¿Debo agregarlo al principio usando la misma sintaxis (user www www
)?[www]
parte y agregauser=www
en la siguiente línea, ygroup=www
en la siguiente.[emerg] getpwnam("www") failed in /etc/nginx/nginx.conf:1 nginx: configuration file /etc/nginx/nginx.conf test failed
.En Ubuntu 14.04 en el archivo para el cambio de usuario y grupo en PHP-FPM es:
/etc/php5/fpm/pool.d/www.conf
. En este archivo, cambie estos parámetros:fuente
/etc/php/7.2/fpm/pool.d/www.conf
Para responder a su pregunta real es simplemente cambiar la
user
línea de la siguientenginx.conf
manera:Ejemplo:
El usuario preferido para que Nginx se ejecute, ya que en realidad difiere entre los sistemas operativos. A veces se supone que Nginx se ejecuta como
www-data
. Otras veces se supone que debe ejecutarse comonobody
.En algunos sistemas operativos (como Windows), ni siquiera importa, y la
user
líneanginx.conf
puede comentarse o excluirse por completo.fuente