Nginx não passa uri para php5-fpm, servindo como arquivo de texto

Nginx não passa uri para php5-fpm, servindo como arquivo de texto

conforme declarado acima, o uri não está sendo passado para o nginx. Incluí todo o bloco "try" para mostrar isso.

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    set $page_to_view "/index.php";
    try_files $uri $uri.php $uri/;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
}

Então, está essencialmente dizendo "ah, ei, fizemos $uri.php e esse arquivo existe, vamos servi-lo em vez de enviá-lo para php."

e minha parte fpm está abaixo.

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
#   # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

#   # With php5-cgi alone:
#   fastcgi_pass 127.0.0.1:9000;
#   # With php5-fpm:
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

Praticamente estoque. Então, o que não entendo é por que o nginx não está mais fazendo isso. Eu sei que estava funcionando com fastcgi no debian, mas agora não está, e perdi meu arquivo de configuração antigo devido a uma falha no disco rígido e é o único arquivo que não fiz backup antes de enviar a unidade de volta como pensei que seria. perfeitamente AOK para reescrevê-lo.

Responder1

Você não diz qual URI está tentando carregar, mas presumo que não termina em .php.

Seu problema aqui é que você não está interpretando a try_filesdiretiva literalmente, como o nome indica. É especificamente tentar umarquivo.Está documentado como try_files file ... uri;significando que apenas o último argumento será tratado como um substituto, causando uma reescrita interna. Qualquer argumento antes do último é testado como um arquivo estático e, se encontrado, é servido como um arquivo estático.

Isso significa que você pode fazer try_files $uri $uri/ $uri.php;, mas não pode fazertry_files $uri $uri.php $uri/

Responder2

tente substituir

location ~ \.php$ {

com

location ~ \.php {

e $document_root com o diretório real onde o arquivo php é colocado

por ex.

fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;

informação relacionada