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?


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;
}

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.


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


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;
}

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.