J'essaie de configurer un serveur Ubuntu (12.04) fraîchement installé, mais je ne peux pas faire fonctionner les fichiers PHP via php-fpm. Peu importe ce que je fais, 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 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
j'obtiens la page "Accès refusé".
Dépannage:
- Le fichier index.html fonctionne très bien. Il doit donc s'agir soit de php-fpm, soit de la liaison fastcgi entre Nginx et php-fpm.
- J'ai défini la propriété (à la fois utilisateur et groupe) de l'ensemble du
/extra
répertoirewww-data
et la propriété à 777, juste pour être sûr (je le baisserai une fois que cela fonctionnera bien sûr). Ce n'est donc certainement pas un problème d'autorisations - Ce n'est pas le problème security.limit_extensions que je vois beaucoup: par défaut, il est défini sur .php, ce qui est exactement ce que je demande. Je l'ai explicitement défini sur
.php .html
, avec le même résultat.
Je suis vraiment fatigué de cela, j'ai déjà installé cette configuration deux fois (bien que sur les machines OSX), et tout a fonctionné parfaitement. Y a-t-il quelque chose que j'oublie?
Le contenu du journal:
Le journal des erreurs Nginx est vide.
Journal d'accès Nginx (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
chown
problème.cgi.fix_pathinfo
réglé sur 0 (configuration par défaut) était le problème.cgi.fix_pathinfo = 0
est recommandé par de nombreux tutoriels car il permet d'atténuer les vulnérabilités, en particulier les vulnérabilités exécutant du code php via des fichiers arbitraires. Donc, si vous définissez cette valeur sur 1, assurez-vous de savoir ce que vous faites ou spécifiez d'autres atténuations pour compenser cela. J'ai trouvé ce post pour avoir une bonne explication sur le problème: nealpoole.com/blog/2011/04/…