Eu atualizo o nginx para 1.4.7 e o php para 5.5.12 . Depois disso, recebi o erro 502 . Antes de atualizar tudo funciona bem.
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;
}
Respostas:
Eu tive um erro semelhante após a atualização do php. O PHP corrigiu um erro de segurança onde
o
haviarw
permissão para o arquivo de soquete./etc/php5/fpm/pool.d/www.conf
ou/etc/php/7.0/fpm/pool.d/www.conf
, dependendo da sua versão.Remova o comentário de todas as linhas de permissão, como:
Reinicie o fpm -
sudo service php5-fpm restart
ousudo service php7.0-fpm restart
Nota : se o servidor da web for executado como usuário que não seja www-data, você precisará atualizar o
www.conf
arquivo de acordofonte
sudo usermod -aG www-data nginx
permite nginx para acessar o arquivoTodas as correções atualmente mencionadas aqui ativam basicamente a falha de segurança novamente.
O que acabei fazendo foi adicionar as seguintes linhas ao meu arquivo de configuração PHP-FPM.
Certifique-se de que www-data seja realmente o usuário em que o trabalhador nginx está executando. Para debian, é www-data por padrão.
Fazer dessa maneira não habilita o problema de segurança que essa alteração deveria corrigir .
fonte
ps aux|grep nginx
/var/run/php5-fpm.sock
, pois já foi criado porwww-data
. Apenas um heads-up ...A solução do @ Xander funciona, mas não persiste após uma reinicialização.
Eu descobri que eu tinha que mudar
listen.mode
para0660
no/etc/php5/fpm/pool.d/www.conf
.Amostra de www.conf:
Edit: Por @ Chris Burgess, eu mudei isso para o método mais seguro.
Eu removi o comentário para listen.mode, .group e .owner:
/ var / run Somente contém informações sobre o sistema em execução desde a última inicialização, por exemplo, usuários atualmente conectados e daemons em execução. ( http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard#Directory_structure ).
Nota:
Meus
php5-fpm -v
Relatórios:PHP 5.4.28-1+deb.sury.org~precise+1
. O problema aconteceu após uma atualização recente também.fonte
listen.acl_groups
estiver definidolisten.owner
elisten.group
for ignorado. Eu definolisten.acl_groups =
, então o problema 502 / Permissions desapareceu. Encontrado após descomentar aslisten.
linhas como acima, o problema 502 persistiu esystemctl status php-fpm
mostrou o avisoWARNING: [pool www] ACL set, listen.owner = 'nobody' is ignored
.Se você tentou de tudo neste post, mas não está conseguindo fazer o PHP funcionar, é isso que o corrigiu no meu caso:
Certifique-se de ter estas linhas não comentadas em /etc/php5/fpm/pool.d/www.conf:
Certifique-se de que o / etc / nginx / fastcgi_params seja assim:
Essas duas linhas estavam ausentes no meu / etc / nginx / fastcgi_params, verifique se estão lá!
Em seguida, reinicie o php5-fpm e o nginx. Deve fazer o truque.
fonte
De fato, "listen.mode" deve ser: "0660" e não "0666" como Outro gravável ou Outro legível nunca é uma boa opção aqui.
Portanto, tente descobrir qual usuário / grupo seu servidor Web executa. Eu uso o CentOs e ele roda como usuário "nginx". Portanto, adicione ao seu php-fpm.conf:
finalmente reinicie o php-fpm
fonte
www-data
.Verifique qual usuário executa o nginx. A partir do Ubuntu 12.04, o nginx é executado pelo usuário do nginx, que não é membro do grupo www-data.
e reiniciar os daemons nginx e php5-fpm resolve o problema.
fonte
Alternativa à ampliação de permissões em sua configuração php, você pode alterar o usuário especificado em sua configuração nginx.
Na primeira linha do seu trecho nginx.conf acima, o usuário e o grupo são especificados como www e www, respectivamente.
Enquanto isso, sua configuração php provavelmente especifica um usuário e um grupo de www-data:
Você pode alterar a linha no seu nginx.conf para qualquer um dos seguintes:
fonte
Também é necessário considerar seus pools individuais do FPM, se houver.
Eu não conseguia descobrir por que nenhuma dessas respostas estava funcionando para mim hoje. Esse foi um cenário de esquecer e esquecer, onde esqueci que o listen.user e o listen.group eram duplicados por pool.
Se você usou pools para diferentes contas de usuário como eu, onde cada conta de usuário possui seus processos e soquetes do FPM, definir apenas as opções padrão de configuração listen.owner e listen.group para 'nginx' simplesmente não funcionará. E, obviamente, deixar que o 'nginx' possua todos eles também não é aceitável.
Para cada piscina , verifique se
Caso contrário, você pode deixar a propriedade da piscina e tal sozinha.
fonte
Acabei de receber este erro novamente hoje quando atualizei minha máquina (com atualizações para PHP) executando o Ubuntu 14.04 . O arquivo de configuração da distribuição
/etc/php5/fpm/pool.d/www.conf
está bom e não requer nenhuma alteração atualmente.Encontrei os seguintes erros:
O estranho é que eu tenho dois sites em execução que utilizam o PHP-FPM nesta máquina, um estava funcionando bem e o outro (uma instalação Tiny Tiny RSS) me deu um 502, onde ambos estavam funcionando bem antes .
Comparei os dois arquivos de configuração e descobri que
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
estava faltando no site afetado.Os dois arquivos de configuração agora contêm o seguinte bloco e estão funcionando corretamente novamente:
Atualizar
Deve-se notar que o Ubuntu envia dois arquivos de parâmetros relacionados ao fastcgi e também um trecho de configuração que está disponível desde o Vivid e também na versão PPA . A solução foi atualizada de acordo.
Diferença dos arquivos de parâmetro fastcgi:
Snippet de configuração em
/etc/nginx/snippets/fastcgi-php.conf
fonte
A seguinte correção simples funcionou para mim, ignorando possíveis problemas de permissões no soquete.
Na sua configuração nginx, defina fastcgi_pass como:
Ao invés de
Isso deve corresponder ao parâmetro listen = em /etc/php5/fpm/pool.d/www.conf, portanto, configure-o também para:
Em seguida, reinicie o php5-fpm e o nginx
E
Para obter mais informações, consulte: https://wildlyinaccurate.com/solving-502-bad-gateway-with-nginx-php-fpm/
fonte
O problema no meu caso era que o servidor da web Nginx estava sendo executado como usuário nginx e o pool estava sendo executado como usuário www-data.
Resolvi o problema alterando o usuário em que o Nginx está executando no
/etc/nginx/nginx.conf
arquivo (pode ser diferente no seu sistema, o meu é o Ubuntu 16.04.1)Mudança:
user nginx;
para:
user www-data;
reinicie o Nginx:
service nginx restart
fonte
Simples, mas funciona ..
fonte
Corrigi o mesmo problema no Amazon Linux AMI 2016.09 (Centos 7), executando as seguintes etapas.
Abra seus arquivos www.conf (Exemplo: sudo nano /etc/php-fpm.d/www.conf) Por fim, encontre as linhas que definem o listen.owner e o listen.group e altere seus valores de "nobody" para "nginx ":
Por fim, encontre as linhas que definem o usuário e o grupo e altere seus valores de "apache" para "nginx":
Reinicie o php-fpm (serviço sudo reinicie o php-fpm)
fonte
A coisa mais importante aqui é qual usuário está usando o nginx, então você precisa especificá-lo também
no seu nginx.conf
no seu www.conf
no seu caso, o usuário e o grupo são "www"; basta substituí-lo.
fonte
Se você tiver um pool diferente por usuário, verifique se o usuário e o grupo estão definidos corretamente no arquivo de configuração. Você pode encontrar o usuário nginx no arquivo /etc/nginx/nginx.conf. O grupo nginx é igual ao usuário nginx.
fonte
Verifique também o SELINUX (/ etc / selinux):
Desligue isso:
fonte
No meu caso, o php-fpm não estava funcionando, então tive que iniciar o serviço?
fonte
Basta ver o
/etc/php5/php-fpm.conf pid = /var/run/php5-fpm.pid
arquivo IS PIDNo arquivo
/etc/php5/fpm/pool.d/www.conf
listen = /var/run/php5-fpm.sock
Arquivo IS SOCKETse você ouvir igual listen (
pid = /var/run/php5-fpm.sock and listen = /var/run/php5-fpm.sock
) -> configurações erradas e terminar o ajuste/etc/php5/fpm/pool.d/www.conf
fonte
Apenas para adicionar, no CentOS (e provavelmente Red Hat e Fedora) o arquivo para o qual alterar as permissões está em:
fonte
Após a atualização do Ubuntu 14.04 lts para o Ubuntu 16.04 lts, encontrei mais uma razão para esse erro que não havia visto antes.
Durante o processo de atualização, de alguma forma, perdi meu executável php5-fpm por completo. Todos os arquivos de configuração estavam intactos e demorei um pouco para perceber que
service php5-fpm start
realmente não iniciamos um processo, pois não mostrava nenhum erro.Meu momento de despertar foi quando notei que não havia arquivo de soquete
/var/run/php5-fpm.sock
, como deveria haver, nemnetstat -an
mostrava processos ouvindo a porta que tentei como alternativa enquanto tentava resolver esse problema. Como o arquivo / usr / sbin / php5-fpm também não existia, eu finalmente estava no caminho certo.Para resolver esse problema, atualizei o php da versão 5.5 para 7.0.
apt-get install php-fpm
fez o truque como um efeito colateral. Depois disso e instalando outros pacotes necessários, tudo voltou ao normal.Essa solução de atualização pode ter problemas próprios , no entanto. Como o php evoluiu bastante, é possível que o software se quebre de maneiras inimagináveis. Portanto, mesmo que eu tenha seguido esse caminho, você pode manter a versão de que gosta por mais algum tempo.
Felizmente, parece haver uma maneira legal de fazer isso , conforme descrito no site The Customize Windows:
Melhor solução, por mais que eu não tentei isso. Espero que os próximos dias me digam se devo.
fonte
Eu tive o erro semelhante.
Todas as recomendações não ajudaram.
A única substituição de www-data pelo nginx ajudou:
/var/www/php/fpm/pool.d/www.conf
fonte
Eu mudei o SO no meu servidor várias vezes tentando obter o sistema mais confortável.
Costumava funcionar muito bem na maioria das vezes, mas por fim recebi esse erro do 502 Gateway.
Eu uso um soquete php fpm para cada conta, em vez de manter o mesmo para todos. Portanto, se um travar, pelo menos os outros aplicativos continuarão em execução.
Eu costumava ter usuário e grupo www-data. Mas isso mudou no meu Debian 8 com o mais recente Nginx 1.8 e php5-fpm.
O usuário padrão é nginx e o grupo também. Para ter certeza disso, a melhor maneira é verificar os arquivos / etc / group e / etc / passwd. Estes não podem mentir.
Foi lá que descobri que agora tenho o nginx nos dois e não mais em www-data.
Talvez isso possa ajudar algumas pessoas ainda tentando descobrir por que a mensagem de erro continua aparecendo.
Funcionou para mim.
fonte
Para aqueles que tentaram de tudo neste tópico e ainda travaram: Isso resolveu meu problema. Atualizei /usr/local/nginx/conf/nginx.conf
Remova o comentário da linha dizendo
user
faça com que
www-data
se torne:user www-data;
Salve (é necessário acesso root)
Reinicie o nginx
fonte
Se você tiver declarações
e
em diferentes arquivos de configuração, o root será o proprietário desse arquivo.
fonte