Try_files não atinge o PHP (configuração NginX)

9

Abaixo está meu nginx.conf.

No caso de arquivos não existentes, /index.php é exibido corretamente.

Mas quando o meu URL é /foo/bar => /foo/bar/index.php é servido como código-fonte do PHP via download.

Alguma idéia?

try_files $uri $uri/ $uri/index.php /index.php;

location ~ \.php$ { 
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}
    
por Benjamin Harel 23.08.2012 в 14:15
fonte

3 respostas

4

A solução foi adicionar índice index.php

    index index.php

    try_files $uri $uri/ $uri/index.php /index.php;

    location ~ \.php$ { 
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    
por Benjamin Harel 23.08.2012 / 17:08
fonte
1

Minha configuração

index index.html index.htm index.php;
location ~ \.php$ {
        fastcgi_pass unix:/tmp/php-fpm.sock;
        include fastcgi_params;
      }

recarregue nginx e fastcgi ambos

    
por amitchhajer 23.08.2012 / 15:29
fonte
0

Eu também tive esse mesmo problema. Quando tive o seguinte no contexto do PHP ( location ~ ^(.+\.php)(.*)$ { ... ):

try_files $fastcgi_script_name =404;

.. ele sempre retornava 404. Por fim, eu li os documentos do try_files , onde ele diz :

  

O caminho para um arquivo é construído a partir do parâmetro file de acordo com as diretivas root e alias.

Eu tinha definido apenas alias para cada bloco de localização (e nenhum no bloco PHP-FPM, é claro), mas não tinha um root definido em qualquer lugar, então a NGiNX não sabia onde procurar para um arquivo. Depois de definir root para o bloco do servidor, ele começou a funcionar.

    
por Ville 26.09.2014 / 19:38
fonte