Eu bati em uma parede ao configurar um site usando nginx / fpm. A página exibe "Arquivo não encontrado" e isso aparece no nginx error.log:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
Eu sou novo no nginx e no fpm, e essa mensagem de erro não significa nada para mim (mesmo a máquina do google não ajudou!). Alguém pode lançar alguma luz sobre o que poderia estar acontecendo?
SCRIPT_FILENAME
.Respostas:
Você deve ter uma
location
seção para lidar com solicitações PHP configuradas de maneira semelhante a esta:(O extra
try_files
resolve uma vulnerabilidade de segurança que pode permitir que arquivos arbitrários sejam executados como PHP.)Além disso, você
root
deve ser definido naserver
seção do arquivo de configuração, não nalocation
seção. Essa é uma das configurações mais comuns do nginx .fonte
Esta é uma nota para instalações de passageiros.
Acabei de instalar o nginx da fonte via passageiro, o que causou um problema com o php5-fpm. O nginx.conf padrão utiliza o problema descrito por Michael Hampton. A solução é remover o blok das diretivas raiz e de índice, portanto:
torna-se:
Além disso, o bloco php está configurado incorretamente. Veja a resposta de Michael Hamptons da maneira correta.
Uma observação adicional pode ser que, se o php5-fpm estiver configurado para usar sockets, aponte o parâmetro fastcgi_pass no bloco php no nginx.conf para a configuração do soquete em /etc/php5/fpm/pool.d/www.conf.
fonte
Eu apenas tive esse problema em uma nova versão do nginx. (configuração retirada de uma versão mais antiga)
O que eu tinha que fazer era colocar
include fastcgi_params;
acima o meu costumeSCRIPT_FILENAME
assim:Como o
SCRIPT_FILENAME
estava sendo substituído.fonte
Se você estiver usando aliases em seus blocos de localização, um erro 404 não tratado também pode exibir esse comportamento. Você pode ver isso se a página exibida no navegador for o texto simples "Arquivo não encontrado", em oposição à página nginx 404 mais formatada (mais centralizada). Essencialmente, está realmente dizendo que a página 404 não pode ser encontrada.
Para resolver, adicione uma
try_files $uri =404
linha adicional ao seu bloco de localização e recarregue a configuração do nginx. Além do que Michael Hampton disse sobre a solução de uma vulnerabilidade de segurança específica , isso também permite que o manipulador fastcgi substitua a definição de alias e encontre o script 404 no local padrão.fonte
sobre a linha 149, alterar usuário php e grupo de usuários
Eu testei com sucesso agora.
fonte
Eu tenho visto :
em um servidor que eu coloquei sob alta carga durante o teste de estresse. Minha suspeita, ainda a ser confirmada, é que os identificadores de arquivos disponíveis no sistema operacional estavam esgotados. Nesse caso, o php-fpm não pode obter uma referência ao arquivo.
Sei que isso é especulativo, mas certamente se encaixa no meu cenário e também pode ajudar outra pessoa.
fonte
fonte