NGINX não está executando arquivos PHP


9

Não consegui encontrar uma resposta para isso. Instalado PHP5 + NGINX + PHP-FPM e não pode executar arquivos php, ele recebe a mensagem "Ops! Este link parece estar quebrado." erro no CHROME. Não tenho nenhum relatório de log de erros valioso, tenho um index.php na raiz, tentei criar um arquivo phpinfo.php personalizado, nem funcionou.

Eu posso carregar arquivos HTML, mas não consigo PHP.

Aqui está a configuração do meu site local no NGINX:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    location / {
        root   /var/www/website;
        index  index.html index.htm index.php;
    }


    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/website$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

}

Propriedade alterada de todo o diretório para www-data: www-data, fez um 777 no arquivo php, nada. Nginx reiniciado, FPM, nada.

Socorro? :(


procure no seu log de erros
Mike

Já o fez "Não tenho nenhum relatório valioso de log de erros". Está completamente vazio.
Gabriel A. Zorrilla

Você precisa de mais dados para diagnosticar o problema. Eu sugeriria começar adicionando 'fastcgi_intercept_errors on;' à sua configuração (se não estiver em fastcgi_params) para registrar quaisquer erros do FPM. Adicione também 'debug' à sua linha error_log para obter mais detalhes (verifique também o nginx error_log principal (possivelmente em / var / log)). Sua diretiva server_name parece incomum - não tenho certeza se você a substituiu nesta postagem ou se é realmente assim. Como recomendação geral, mova sua diretiva raiz para fora do seu bloco de localização. Sugestão (improvável) final: verifique se o servidor padrão não está servindo as páginas html que você pode ver).
cyberx86

Respostas:


9

é exibido "Opa! Este link parece estar quebrado." erro no CHROME.

O Chrome mostra sua própria página de erro se a página de erro for menor que 512 bytes.

Eu suspeito que você tenha a seguinte linha fastcgi_params:

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

e, se for o caso, como a rootdiretiva é definida em location /nunca será aplicada location ~ \.php$, o valor SCRIPT_FILENAMEse torna URI.

Isso pode ser resolvido movendo a rootdiretiva para o servercontexto de nível:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    root   /var/www/website;

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

}

Bingo. Movido a raiz do bloco do servidor, conforme sugerido e funcionado. Obrigado!
Gabriel A. Zorrilla

@quanta: O OP editou a configuração em sua pergunta? Por ser um caminho codificado, ele ainda deve funcionar perfeitamente quando a diretiva raiz é definida no contexto do local. O único caso em que isso não funcionaria era se ele definisse SCRIPT_FILENAME em seu arquivo fastcgi_params usando $ document_root e, assim, substituísse o código codificado.
Martin Fjordvald 17/10/11

@ MartinF: Não, o OP não editou a configuração. Você está certo. Vou editar minha resposta.
quanta

-3

No meu caso, estava faltando o pacote php-zip. Para corrigir isso, executei:

yum install -y php-zip
systemctl restart php-fpm nginx

3
Aparentemente, a causa do OP foi para algo completamente diferente.
Sven

Isso não significa que alguém que encontre o caminho para esta página com esse problema terá a mesma causa que o OP, ele pode muito bem ter a causa que o wejdross teve e achar essa resposta útil. A questão não é específica para essa causa, é específica para esse sintoma e, obviamente, existem várias causas para isso, então pessoas com causas diferentes podem acabar aqui.
21419 Synetech

-4
    fastcgi_pass unix:/var/run/php5-fpm.sock;

4
Bem-vindo à falha do servidor! Parece que você pode ter o conhecimento necessário para fornecer uma boa resposta aqui, mas por favor considere ler Como faço para escrever uma boa resposta? na nossa Central de Ajuda, revise e expanda sua resposta. Seus comandos / código / configurações podem ser tecnicamente a solução, mas alguma explicação é bem-vinda. Desde já, obrigado.
HBruijn

4
Além disso: mesmo que essa linha seja o que resolve o problema, para onde ela vai? O OP mostra dois locations. A linha entra em uma? O outro? Ambos? Edite sua resposta para completá-la.
David Makogon
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.