Nginx + Php5-fpm não renderiza arquivos php

8

Passei horas tentando descobrir como instalar o Nginx + Ruby Enterprise Edition + PHP5-fpm e o MYSQL. Finalmente, tudo está instalado e tudo parece ter começado bem.

Mas, por algum motivo, os arquivos php não estão sendo processados.

.html funciona bem, mas quando tento e vejo um arquivo .php, parece que ele não existe, mesmo que não exista. Curiosamente, quando eu tento ver um arquivo .html que não existe, recebo uma mensagem agradável do Nginx 404, mas quando vejo um arquivo .php, ele nem me dá isso.

Então, para minha compreensão de principiante, parece que há algo errado com a configuração, ou o Nginx e o PHP-fpm não estão falando um com o outro.

Eu tenho visto tantos outros exemplos de arquivos de configuração do nginx e tenho certeza de que o lado das coisas está bem. Bem ... aqui está o bit relevante do arquivo conf de qualquer maneira: %pr_e%

E %pr_e%

Qualquer ajuda é muito apreciada.

editar : Aqui estão os cabeçalhos retornados do arquivo php de teste " link ": %pr_e%

    
por Emmanuel 16.12.2010 / 11:51

3 respostas

10

Acredito que tenha encontrado exatamente o mesmo problema hoje, o nginx envia o pedido para o php-fpm (como indicado no cabeçalho), mas você obtém um 404, mesmo que o arquivo exista e não tenha nenhum erro (PHP / sintaxe) de jeito nenhum, e nenhum erro aparece em qualquer log (ngins ou php-fpm).

Você não incluiu a configuração completa do nginx, mas é possível que você não tenha a opção "root" definida (corretamente?) na seção "servidor"? Você precisa se certificar de que ele aponta para a localização correta ofc e que está dentro da seção "servidor", não dentro de uma "localização", por exemplo:

server {
    root /var/www/eman;
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/eman/$fastcgi_script_name;
        include fastcgi_params;
    }
}
    
por 02.02.2011 / 10:52
1

Se você der uma olhada nos cabeçalhos link , você verá X-Powered-By: PHP/5.3.2-1ubuntu4.5ppa5~lucid1 . Isso não seria mostrado se a solicitação não fosse passada para o PHP. Além disso, se o PHP não puder encontrar o caminho do arquivo passado, ele irá ecoar o erro No input file specified.

Como o seu site produz o cabeçalho "powered by" e não tem o erro No input file specified. , o motivo mais provável é que você tenha um erro no seu script PHP e tenha erros de exibição desativados. Isso resulta em uma página em branco e uma entrada em seu log de erros, portanto, dê uma olhada lá e veja se ele não está sendo preenchido.

    
por 16.12.2010 / 13:25
0

Algumas reflexões:

   fastcgi_param SCRIPT_FILENAME /var/www/eman$fastcgi_script_name;

Isso precisa de uma barra extra

   fastcgi_param SCRIPT_FILENAME /var/www/eman/$fastcgi_script_name;

O NGINX também tem um pouco de cache estranho, então quando você tentar a URL em seu navegador, adicione um random = 12391 ao final para forçar uma atualização. Fiquei perplexo por 30 minutos em uma configuração apenas para descobrir que estava funcionando o tempo todo, mas eu estava sendo atropelado pelo cache.

Você provavelmente também deseja escapar de sua localização um pouco melhor (embora isso não esteja causando esse problema) É uma prática melhor:

location ~ .php$

para

location ~ \.php$

.php $ corresponderia a um pedido como yourpagephp em vez de apenas yourpage.php

    
por 16.12.2010 / 12:05