nginx e barras finais em $ document_root?
Pergunta
Eu uso a seguinte configuração para nginx: http://gist.github.com/340956
No entanto, esta configuração causa um No input file specified
erro com PHP.A única maneira de resolver isso é alterando esta linha:
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
Observe o "/" entre $document_root
e $fastcgi_script_name
.Fui informado de que esta é a configuração errada, mas ninguém foi capaz de me dizer exatamente por que minha configuração exige essa barra extra.
Como posso me livrar dessa barra extra?
Solução
Acabei de enfrentar o mesmo problema (na instalação do REMI do Nginx+Php-FPM em um servidor RHEL6), você pode resolvê-lo adicionando a seguinte linha em/etc/nginx/fastcgi_params
fastcgi_param SCRIPT_FILENAME $request_filename;
Encontrei essa linha ausente em Rhel, enquanto estava presente em um Nginx do Debian perfeitamente funcional.
Outras dicas
O parâmetro PATH_TRANSLATED
obter o URI correto?Estou pensando que é a concatenação imediata das variáveis no arquivo conf que não computa.Ao adicionar uma barra entre eles, talvez sejam interpretados corretamente.
Quando você recebe o erro No input file specified
, verifique seu log para ver qual URI foi solicitado.
Remover try_files $uri index.php$uri;
na linha 3.
Questão de preferência. Contanto que você seja consistente, de qualquer maneira está bem.
Adicione a barra no arquivo de configuração e verifique se não há barras adicionais no final e o início da raiz do documento e o nome do script, respectivamente ou vice -versa.
O que acontece quando você adiciona explicitamente uma diretiva raiz como assim:
location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(.*)$;
include fastcgi.conf;
root /var/www/my_webroot;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}