Actualizo nginx a 1.4.7 y php a 5.5.12 , después de eso recibí el error 502 . Antes de actualizar todo funciona bien.
nginx-error.log
2014/05/03 13:27:41 [crit] 4202#0: *1 connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: xx.xxx.xx.xx, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "xx.xx.xx.xx"
nginx.conf
user www www;
worker_processes 1;
location / {
root /usr/home/user/public_html;
index index.php index.html index.htm;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/home/user/public_html$fastcgi_script_name;
include fastcgi_params;
}
Respuestas:
Tuve un error similar después de la actualización de php. PHP corrigió un error de seguridad donde
o
teníarw
permiso para el archivo socket./etc/php5/fpm/pool.d/www.conf
o/etc/php/7.0/fpm/pool.d/www.conf
, según su versión.Descomente todas las líneas de permiso, como:
Reiniciar fpm -
sudo service php5-fpm restart
osudo service php7.0-fpm restart
Nota : si su servidor web se ejecuta como un usuario que no sea www-data, deberá actualizar el
www.conf
archivo en consecuenciafuente
sudo usermod -aG www-data nginx
permite que nginx acceda al archivoTodas las correcciones mencionadas actualmente aquí básicamente habilitan el agujero de seguridad nuevamente.
Lo que terminé haciendo es agregar las siguientes líneas a mi archivo de configuración PHP-FPM.
Asegúrese de que www-data sea en realidad el usuario con el que se está ejecutando el trabajador nginx. Para debian es www-data por defecto.
Hacerlo de esta manera no habilita el problema de seguridad que se suponía que este cambio debía solucionar .
fuente
ps aux|grep nginx
/var/run/php5-fpm.sock
, ya que fue creado porwww-data
. Solo unLa solución de @ Xander funciona, pero no persiste después de un reinicio.
Me di cuenta que tenía que cambiar
listen.mode
a0660
en/etc/php5/fpm/pool.d/www.conf
.Muestra de www.conf:
Editar: @Chris Burgess, he cambiado esto al método más seguro.
Eliminé el comentario para listen.mode, .group y .owner:
/ var / run Solo contiene información sobre el sistema en ejecución desde el último arranque, por ejemplo, usuarios actualmente conectados y demonios en ejecución. ( http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard#Directory_structure ).
Nota al margen:
Mis
php5-fpm -v
Informes:PHP 5.4.28-1+deb.sury.org~precise+1
. El problema también ocurrió después de una actualización reciente.fuente
listen.acl_groups
se establece,listen.owner
ylisten.group
se ignoran. Configurélisten.acl_groups =
, luego el problema 502 / permisos desapareció. Lo encontré después de descomentar laslisten.
líneas como sesystemctl status php-fpm
indicó anteriormente, el problema 502 persistió y mostró la advertenciaWARNING: [pool www] ACL set, listen.owner = 'nobody' is ignored
.Si ha intentado todo en esta publicación pero no está teniendo éxito para que PHP funcione, esto es lo que lo solucionó para mi caso:
Asegúrese de tener estas líneas sin comentarios en /etc/php5/fpm/pool.d/www.conf:
Asegúrese de que / etc / nginx / fastcgi_params tenga este aspecto:
Estas dos líneas faltaban en mi / etc / nginx / fastcgi_params, ¡asegúrese de que estén allí!
Luego, reinicie php5-fpm y nginx. Debería hacer el truco.
fuente
De hecho, "listen.mode" debería ser: "0660" y no "0666", ya que Other Writable u Other Readable nunca es una buena opción aquí.
Por lo tanto, trate de averiguar qué usuario / grupo ejecuta su servidor web. Yo uso CentOs y se ejecuta como usuario "nginx" Así que agregue a su php-fpm.conf:
finalmente reiniciar php-fpm
fuente
www-data
.Verifique qué usuario ejecuta nginx. A partir de Ubuntu 12.04, nginx se ejecuta por un usuario nginx que no es miembro del grupo www-data.
y reiniciar los demonios nginx y php5-fpm resuelve el problema.
fuente
Alternativa a ampliar los permisos en su configuración de php, puede cambiar el usuario especificado en su configuración de nginx.
En la primera línea de su extracto nginx.conf anterior, el usuario y el grupo se especifican como www y www, respectivamente.
Mientras tanto, su configuración php probablemente especifica un usuario y un grupo de datos de www:
Puede cambiar la línea en su nginx.conf, a cualquiera de los siguientes, entonces:
fuente
También se debe tener en cuenta sus grupos FPM individuales, si los hay.
No pude entender por qué ninguna de estas respuestas me funcionó hoy. Este había sido un escenario para establecer y olvidar para mí, donde había olvidado que listen.user y listen.group se duplicaban por grupo.
Si utilizó grupos para diferentes cuentas de usuario como lo hice yo, donde cada cuenta de usuario posee sus procesos y sockets FPM, establecer solo las opciones de configuración predeterminadas listen.owner y listen.group en 'nginx' simplemente no funcionará. Y obviamente, dejar que 'nginx' los posea a todos tampoco es aceptable.
Para cada grupo , asegúrese de que
De lo contrario, puede dejar la propiedad del grupo y tal solo.
fuente
Acabo de recibir este error nuevamente hoy cuando actualicé mi máquina (con actualizaciones para PHP) que ejecuta Ubuntu 14.04 . El archivo de configuración de distribución
/etc/php5/fpm/pool.d/www.conf
está bien y no requiere ningún cambio actualmente.Encontré los siguientes errores:
Lo extraño fue que tengo 2 sitios en ejecución que utilizan PHP-FPM en esta máquina, uno estaba funcionando bien y el otro (una instalación RSS de Tiny Tiny) me dio un 502, donde ambos funcionaban bien antes .
Comparé ambos archivos de configuración y descubrí que
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
faltaba para el sitio afectado.Ambos archivos de configuración ahora contienen el siguiente bloque y vuelven a funcionar bien:
Actualizar
Cabe señalar que Ubuntu incluye dos archivos de parámetros relacionados con fastcgi y también un fragmento de configuración que está disponible desde Vivid y también en la versión PPA . La solución se actualizó en consecuencia.
Diferencia de los archivos de parámetros fastcgi:
Fragmento de configuración en
/etc/nginx/snippets/fastcgi-php.conf
fuente
La siguiente solución simple funcionó para mí, evitando posibles problemas de permisos con el zócalo.
En su configuración nginx, establezca fastcgi_pass en:
En vez de
Esto debe coincidir con el parámetro listen = en /etc/php5/fpm/pool.d/www.conf, así que también configúrelo en:
Luego reinicie php5-fpm y nginx
Y
Para obtener más información, consulte: https://wildlyinaccurate.com/solving-502-bad-gateway-with-nginx-php-fpm/
fuente
El problema en mi caso fue que el servidor web Nginx se estaba ejecutando como usuario nginx y el grupo se estaba ejecutando como usuario www-data.
Resolví el problema cambiando el usuario en el que se está ejecutando Nginx en el
/etc/nginx/nginx.conf
archivo (podría ser diferente en su sistema, el mío es Ubuntu 16.04.1)Cambio:
user nginx;
a:
user www-data;
luego reinicie Nginx:
service nginx restart
fuente
Simple pero funciona ..
fuente
He solucionado el mismo problema en Amazon Linux AMI 2016.09 (Centos 7) siguiendo estos pasos.
Abra sus archivos www.conf (Ejemplo: sudo nano /etc/php-fpm.d/www.conf) Por último, busque las líneas que configuran listen.owner y listen.group y cambie sus valores de "nobody" a "nginx ":
Por último, busque las líneas que establecen el usuario y el grupo y cambie sus valores de "apache" a "nginx":
Reinicie php-fpm (reinicio del servicio sudo php-fpm)
fuente
Lo más importante aquí es qué usuario está usando nginx, entonces ¿necesita especificarlo también?
en su nginx.conf
en tu www.conf
en su caso, el usuario y el grupo son "www", así que simplemente reemplácelo.
fuente
Si tiene un grupo diferente por usuario, asegúrese de que el usuario y el grupo estén configurados correctamente en el archivo de configuración. Puede encontrar el usuario nginx en el archivo /etc/nginx/nginx.conf. El grupo nginx es igual que el usuario nginx.
fuente
Verifique también SELINUX (/ etc / selinux):
apágalo:
fuente
En mi caso, php-fpm no se estaba ejecutando en absoluto, así que solo tuve que iniciar el servicio 😂
fuente
Sólo ve
/etc/php5/php-fpm.conf pid = /var/run/php5-fpm.pid
archivo IS PIDEn archivo
/etc/php5/fpm/pool.d/www.conf
listen = /var/run/php5-fpm.sock
IS SOCKET filesi pide igual listen (
pid = /var/run/php5-fpm.sock and listen = /var/run/php5-fpm.sock
) -> configuración incorrecta y terminar sett/etc/php5/fpm/pool.d/www.conf
fuente
Solo para agregar, en CentOS (y probablemente Red Hat y Fedora) el archivo para cambiar los permisos está en:
fuente
Después de actualizar Ubuntu 14.04 lts a Ubuntu 16.04 lts, encontré una razón más para este error que no había visto antes.
Durante el proceso de actualización, de alguna manera había perdido mi ejecutable php5-fpm por completo. Todos los archivos de configuración estaban intactos y me tomó un tiempo darme cuenta de que
service php5-fpm start
realmente no comenzaba un proceso, ya que no mostraba ningún error.Mi momento de despertar fue cuando noté que no había ningún archivo de socket
/var/run/php5-fpm.sock
, como debería haber, ni tampoconetstat -an
mostraba procesos que escuchaban en el puerto que intenté como alternativa al intentar resolver este problema. Como el archivo / usr / sbin / php5-fpm tampoco existía, finalmente estaba en el camino correcto.Para resolver este problema, actualicé php de la versión 5.5 a la 7.0.
apt-get install php-fpm
hizo el truco como efecto secundario. Después de eso e instalando otros paquetes necesarios, todo volvió a la normalidad.Sin embargo, esta solución de actualización puede tener problemas propios . Como php ha evolucionado bastante, es posible que el software se rompa de formas inimaginables. Entonces, a pesar de que seguí ese camino, es posible que desee mantener la versión que le gusta solo por un tiempo más.
Afortunadamente, parece que hay una buena manera de hacerlo , como se describe en el sitio Personalizar Windows:
Una solución más ordenada como podría ser, no lo intenté. Espero que los próximos días me digan si debería haberlo hecho.
fuente
Tuve el error similar.
Todas las recomendaciones no ayudaron.
El único reemplazo de www-data con nginx ha ayudado a:
/var/www/php/fpm/pool.d/www.conf
fuente
Cambié el sistema operativo en mi servidor varias veces tratando de obtener el sistema más cómodo.
Solía funcionar muy bien la mayor parte del tiempo, pero finalmente recibí este error 502 Gateway.
Utilizo un socket php fpm para cada cuenta en lugar de mantener el mismo para todos. Entonces, si uno falla, al menos las otras aplicaciones siguen ejecutándose.
Solía tener datos de usuario y grupo www. Pero esto cambió en mi Debian 8 con la última versión de Nginx 1.8 y php5-fpm.
El usuario predeterminado es nginx y también lo es el grupo. Para estar seguro de esto, la mejor manera es verificar los archivos / etc / group y / etc / passwd. Estos no pueden mentir.
Es allí donde descubrí que ahora tengo nginx en ambos y ya no www-data.
Tal vez esto pueda ayudar a algunas personas que todavía intentan descubrir por qué sigue apareciendo el mensaje de error.
Funcionó para mi.
fuente
Para aquellos que intentaron todo en este hilo y todavía se atascaron: Esto resolvió mi problema. Actualicé /usr/local/nginx/conf/nginx.conf
Descomente la línea que dice
user
haz que
www-data
se convierta en:user www-data;
Guárdelo (se requiere acceso de root)
Reiniciar nginx
fuente
Si tienes declaraciones
y
en diferentes archivos de configuración, entonces root será el propietario de este archivo.
fuente