Lors de l'access aux files PHP, nginx lance une erreur 404

Bien, désolé pour les dernières et récentes questions que j'ai posées au sujet de nginx, cela ne fait que mon tour.

J'ai activé PHP en utilisant fastcgi_php et ça fonctionne très bien, cependant, lorsque j'hésite à un file PHP, par exemple

http://domain.com/info.php

(qui s'applique à var/www/domain.com/www/info.php )

Ce qui inclut le phpinfo() et nginx lance une erreur 404 … si j'habite à un file normal, p.ex.

http://domain.com/index.html

Il semble bien … comment nnanx ne va-t-il pas traiter avec les files PHP?

Ceci est le etc/nginx/sites-enabled/domain.com .

 server { listn 80; server_name domain.com *.domain.com; access_log /var/www/domain.com/logs/nginx_access.log; error_log /var/www/domain.com/logs/nginx_error.log; root /var/www/domain.com/www/; location / { index index.html index.htm index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/nginx-default; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } # Enable PHP include /etc/nginx/fastcgi_php; } 

Je n'ai aucune idée de quoi faire plus loin …

MODIFIER:

Mon /etc/nginx/fastcgi_php

 location ~ \.php$ { fastcgi_pass unix:/var/run/php-fastcgi/php.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } 

D'abord, assurez-vous d'avoir installé php-cgi apt-get install php5-cgi . Ensuite, créez un script de démarrage pour FastCGI PHP.

Créez le file /etc/init.d/fastcgi-php avec le contenu suivant:

 #!/bin/bash BIND_DIR=/var/run/php-fastcgi BIND="$BIND_DIR/php.sock" USER=www-data PHP_FCGI_CHILDREN=8 PHP_FCGI_MAX_REQUESTS=1000 PHP_CGI=/usr/bin/php-cgi PHP_CGI_NAME=`basename $PHP_CGI` PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND" RETVAL=0 start() { echo -n "Starting PHP FastCGI: " mkdir $BIND_DIR chown -R $USER $BIND_DIR start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS RETVAL=$? echo "$PHP_CGI_NAME." } stop() { echo -n "Stopping PHP FastCGI: " killall -q -w -u $USER $PHP_CGI RETVAL=$? rm -rf $BIND_DIR echo "$PHP_CGI_NAME." } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo "Usage: php-fastcgi {start|stop|restart}" exit 1 ;; esac exit $RETVAL 

Enfin, exécutez les commands suivantes (toutes comme root si dans Debian ou avec sudo si dans Ubuntu)

 chmod 755 /etc/init.d/fastcgi-php update-rc.d fastcgi-php defaults /etc/init.d/fastcgi-php start 

et

 /etc/init.d/nginx reload 

Vérifiez maintenant si le file info.php s'affiche correctement.

Sinon, postz la sortie du journal des erreurs des domaines et du journal d'access.

Vous avez fondamentalement mal compris comment PHP fonctionne avec Nginx. Votre hypothèse selon laquelle Apache == Nginx est incorrect. Nginx n'incline pas PHP en soi, donc si vous essayez d'accéder à un file PHP, c'est PHP qui lance le 404 et non le Nginx.

Malheureusement, vous avez caché votre configuration PHP avec include /etc/nginx/fastcgi_php; donc je ne peux pas vous dire si vous avez configuré Nginx correctement, alors, veuillez fournir votre configuration complète.

Pendant ce time, vous pouvez vérifier que PHP lance effectivement le 404 en vérifiant les en-têtes renvoyés et en vérifiant si vous avez X-Powered-By: PHP/5.3.8 . Si cela est présent, vous devez vérifier que vous envoyez PHP le path de file approprié via SCRIPT_FILENAME fastcgi_param. Si celui-ci est correct, PHP ne peut pas lire le file en raison d'permissions incorrectes, cela peut être soit l'access en lecture sur le file lui-même, soit l'access à l'exécution sur l'un des directorys parents.