Todos os arquivos php do Nginx / FPM / PHP dizem 'Arquivo não encontrado'.

8

Eu apenas instalei o nginx 1.1.13 e o php 5.4.0 em uma máquina 64 bits final do centos 5.8. Nginx e PHP / Fpm estão em execução, e eu posso executar scripts php via linha de comando ssh, mas no navegador continuo recebendo 'Arquivo não encontrado'. erros em todos os meus arquivos PHP.

É assim que meu nginx.conf lida com scripts PHP:

      location ~ \.php$
      {
              root                    /opt/nginx/html;
              fastcgi_pass            unix:/tmp/fpm.sock;
              fastcgi_index           index.php;
              fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
              include                 fastcgi_params;
      }

Esta é uma cópia / pasta direta dos meus outros servidores, onde funciona bem com essa instalação (mas eles executam versões mais antigas do php / fpm).

Por que estou recebendo esses erros?

Mr.Boon
fonte
1
Não importa, está resolvido. Foi um problema de permissões tolas.
31412 Mr.Boon

Respostas:

17

Coloque "inclua fastcgi_params;" antes de todas as linhas "fastcgi_param *" ", inclua fastcgi_params;" substitui todas as linhas "fastcgi_param *" (consulte o registro de depuração do nginx):

location ~ \.php$ {
    root                    /opt/nginx/html;
    fastcgi_pass            unix:/tmp/fpm.sock;
    fastcgi_index           index.php;
    include                 fastcgi_params;
    fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
}
mingalevme
fonte
3
Cara, eu perdi 4 horas com isso e sua resposta me ajudou.
expert
Eu tentei superar esse problema desde ontem. Sua resposta me ajudou muito! Obrigado!!!
Kacper Kołodziej
1
como fazemos isso sem codificar o caminho? Vars $ document_root parece não estar funcionando?
user1179459
3

Eu tive o mesmo problema.

O que fiz para resolver isso foi verificar o usuário executando nginx, php-fpm e verificar suas permissões para acessar a pasta onde está a raiz. É o padrão 'www-data'.

mas você pode descobrir usando os comandos ps aux | grep php-fpme ps aux | grep nginx.

Você precisa garantir que a pasta esteja acessível ao usuário executando esses processos.

miog
fonte
Obrigado pela pista. Tentei hospedar meus projetos no meu diretório do Dropbox, que tinha 700 permissões por padrão. Alterar a permissão do Dropbox para 755 resolveu o problema.
Rodion Baskakov
1

Eu tive o mesmo problema e, para mim, era uma diretiva "raiz" incorreta / inexistente na configuração do servidor nginx

Xosofox
fonte
1

Eu uso essa configuração, gostaria que pudesse ajudá-lo. Funciona no OS X. Quanto a mim, a resposta do @Xosofox funcionou. Digitei incorretamente a versão do nginx 1.6.2 como 1.2.6, para que a raiz se tornasse um diretório inexistente.

location ~ \.php$ {
    fastcgi_intercept_errors on;
    root           /usr/local/Cellar/nginx/1.6.2/html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME /usr/local/Cellar/nginx/1.6.2/html$fastcgi_script_name;
}
Hangchen Yu
fonte
0

Resolvo esse problema alterando usuário e grupo, usando o usuário atual: group em php-fpm.d / www.conf

Por padrão, o usuário e o grupo são 'nginx', altere isso ....

Espero que isto ajude

Pedro Vasconcelos
fonte