web-dev-qa-db-fra.com

Nginx / PHP-FPM "Accès refusé." Erreur

J'essaie de configurer un serveur Ubuntu (12.04) fraîchement installé, mais je ne parviens pas à obtenir les fichiers PHP exécutés via php-fpm. Quoi que je fasse, je reçois toujours un "Accès refusé". page (texte brut, pas HTML ou quoi que ce soit).

Paquets installés:

nginx
nginx-common
nginx-full
php5
php5-cli
php5-common
php5-fpm

Détails de la configuration:

PHP-FPM:

user = www-data
group = www-data
listen = /var/run/php5-fpm.sock

Nginx:

user www-data;
worker_processes 3;
events { worker_connections 1024; }

Domaine par défaut/test:

server {
    listen       80;
    server_name  localhost;
    root         /extra/htdocs/default;
    index        index.html index.php

    access_log   /extra/logs/default/access.log;
    error_log    /extra/logs/default/error.log;

    location / {
        try_files  $uri $uri/ /index.html;
    }

    location ~ \.php
    {
        fastcgi_split_path_info  ^(.+\.php)(/.+)$;

        include fastcgi_params;

        fastcgi_index   index.php;
        fastcgi_pass    unix:/var/run/php5-fpm.sock;
        fastcgi_param   PATH_INFO         $fastcgi_path_info;
        fastcgi_param   PATH_TRANSLATED   $document_root$fastcgi_path_info;
        fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    }
}

/extra/htdocs/default/index.php:

<?php
phpinfo();

Tout le reste est par défaut. Les journaux Nginx et php-fpm ne montrent aucune erreur. Pourtant, lorsque je charge http://<server-ip>/index.php, la page "Accès refusé" s'affiche.

Dépannage:

  • Le fichier index.html fonctionne très bien. Par conséquent, ce doit être soit php-fpm, soit la liaison fastcgi entre Nginx et php-fpm.
  • J'ai défini la propriété (utilisateur et groupe) de tout le répertoire /extra sur www-data et la propriété sur 777, juste pour être sûr (je l'atténuerai une fois que cela fonctionnera bien sûr). Donc, ce n'est certainement pas un problème d'autorisations
  • Ce n'est pas le problème security.limit_extensions que je vois souvent: par défaut, il est défini sur .php, ce qui est exactement ce que je demande. Je l'ai explicitement mis à .php .html, avec le même résultat.

J'en ai vraiment marre, j'ai déjà installé cette configuration deux fois (bien que sur des machines OSX), et tout a fonctionné parfaitement. Y a-t-il quelque chose que je néglige?

Le contenu du journal:

Le journal des erreurs Nginx est vide.

Journal d’accès Nginx (adresse IP supprimée):

<ip> - - [17/Jul/2012:11:21:25 +0200] "GET /favicon.ico HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"
<ip> - - [17/Jul/2012:11:21:28 +0200] "GET /index.php HTTP/1.1" 403 46 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"
<ip> - - [17/Jul/2012:11:21:34 +0200] "-" 400 0 "-" "-"

journal php-fpm:

[17-Jul-2012 10:44:14] NOTICE: fpm is running, pid 4969
[17-Jul-2012 10:44:14] NOTICE: ready to handle connections
14
Peter Kruithof

Enfin résolu le.

Le coupable était cette ligne dans ma config:

fastcgi_param   PATH_TRANSLATED     $document_root$fastcgi_path_info;

Si j'ai commenté cette ligne, tout a bien fonctionné. Cependant, j'ai vu cela dans presque tous les articles que j'ai lus à propos de la configuration de Nginx, alors ça m'a dérangé. En regardant mes configs pour la millionième fois, j'ai vu que cgi.fix_pathinfo (dans php.ini) avait la valeur 0, alors qu'il aurait dû être à 1. La valeur par défaut PHP utilise également 1, j'ai donc dû changer ceci dans mes heures de débogage, parce que je me souviens d'avoir lu à propos de cette valeur et pensais que c'était réglé correctement.

Quoi qu'il en soit, peut-être que cela aide quiconque googler pour ce problème.

33
Peter Kruithof