2010-03-23 22 views
10

J'utilise la configuration suivante pour nginx: http://gist.github.com/340956

Cependant, cette configuration provoque une erreur No input file specified avec PHP. La seule façon que je l'ai été en mesure de le résoudre est en modifiant cette ligne:

fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;

Notez le «/» entre $document_root et $fastcgi_script_name. J'ai été informé que c'est la mauvaise configuration mais personne n'a été capable de me dire exactement pourquoi ma configuration nécessite cette barre oblique supplémentaire.

Comment puis-je me débarrasser de ce slash supplémentaire?

Répondre

4

Juste face à la même question (dans l'installation remi de nginx + php-fpm sur un serveur RHEL6), vous pouvez le résoudre en ajoutant la ligne suivante dans/etc/nginx/fastcgi_params

fastcgi_param SCRIPT_FILENAME $request_filename; 

Je trouve cette ligne manquante dans RHEL, alors présent dans un nginx Debian fonctionne parfaitement.

0

Supprimer try_files $uri index.php$uri; en ligne 3.

+0

Ensuite, ma réécriture est interrompue, car j'ai des URL comme '/ foo/bar' qui redirigent vers' index.php/foo/bar'. – shadowhand

0

question de préférence. Tant que vous êtes cohérent, l'un ou l'autre moyen est bon. Ajoutez la barre oblique dans le fichier de configuration et assurez-vous qu'il n'y a pas de barres obliques supplémentaires à la fin et au début de la racine du document et du nom du script, respectivement vice-versa.

+0

Je ne l'achète pas. Il semble ne faire aucune différence si j'ajoute une barre oblique à $ root ou non. – shadowhand

1

Le paramètre PATH_TRANSLATED obtient-il l'adresse URI correcte? Je pense que c'est la concaténation immédiate des variables dans le fichier conf qui ne calcule pas. Lorsque vous ajoutez une barre oblique entre eux, ils sont peut-être interprétés correctement.

Lorsque vous obtenez l'erreur No input file specified, vérifiez votre journal pour voir quelle URI a été demandée.

+0

Quel journal dois-je vérifier lorsque j'obtiens une erreur 'No input file specified'? Les journaux nginx ne montrent rien, car l'erreur est déclenchée par PHP. – shadowhand

+0

Il n'y a pas de 'PATH_TRANSLATED' dans mon fichier' $ _SERVER'. – shadowhand

+0

Les journaux d'erreurs PHP ne montrent pas non plus d'erreurs. – shadowhand

0

ce qui se passe lorsque vous ajoutez explicitement une directive racine comme ceci:

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; 
} 
+0

Mon '$ root' est défini dans' server {...} 'est-ce que pas assez bon? – shadowhand