solução real para 'Nenhum arquivo de entrada especificado.' (nginx, fpm)

4

A maioria das respostas para esta pergunta é, set fastcgi_param SCRIPT_FILENAME e irá funcionar (formatação em itálico está quebrada ?!).

Eu configurei essa variável (correta), mas ela ainda mostra o erro em vez de uma página 404, porque a raiz do problema está aqui:

location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
    }

Um caminho inexistente é passado para o php5-fpm, isto em retorno imprime o erro, que no log se parece com:

FastCGI sent in stderr:
"Unable to open primary script: ... (No such file or directory)"
while reading response header from upstream

Portanto, antes da linha fastcgi_pass , deve haver uma condição para verificar se o arquivo realmente existe ou se o operador fpm retorna "arquivo não encontrado" para orientar o nginx a retornar uma página 404.

Como posso fazer isso?

    
por DanFromGermany 05.03.2014 / 17:32

2 respostas

8

Usando try_files $uri =404; primeiro!

location ~ \.php$ {
        try_files  $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
}

Graças ao link

    
por 05.03.2014 / 17:35
2

Em alguns tutoriais antigos, você geralmente encontra algo assim

    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    if (! -f $document_root$fastcgi_script_name) {
            return 404;
    }

Mas como o link indica que você deve usar melhor o try_files

Apenas uma observação: É perigoso usar a configuração que você postou sem um bloco if / try_files porque ele pode permitir a execução de código arbitrário sob algumas circunstâncias! Na verdade, existem muitos tutoriais na internet que não cobrem esse aspecto, então eu recomendo a todos que verifiquem se sua configuração não está apenas funcionando, mas também protegida.

    
por 05.03.2014 / 17:51