Ich versuche, einen frisch installierten Ubuntu-Server (12.04) einzurichten, aber ich kann keine PHP-Dateien über php-fpm ausführen. Egal was ich tue, ich erhalte immer die Meldung "Zugriff verweigert". Seite (Klartext, nicht HTML oder irgendetwas).
Installierte Pakete:
nginx
nginx-common
nginx-full
php5
php5-cli
php5-common
php5-fpm
Konfigurationsdetails:
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; }
Standard- / Testdomain:
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();
Alles andere ist Standard. Sowohl das Nginx- als auch das php-fpm-Protokoll zeigen keine Fehler an. Beim Laden http://<server-ip>/index.php
erhalte ich jedoch die Seite "Zugriff verweigert".
Fehlerbehebung:
- Die Datei index.html funktioniert einwandfrei. Daher muss es entweder php-fpm oder die Fastcgi-Bindung zwischen Nginx und php-fpm sein.
- Ich habe den Besitz (sowohl Benutzer als auch Gruppe) des gesamten
/extra
Verzeichnisses aufwww-data
und den Besitz auf 777 gesetzt, nur um sicherzugehen (ich werde ihn abschwächen, sobald er natürlich funktioniert). Es handelt sich also mit Sicherheit nicht um eine Berechtigungsfrage - Es ist nicht das security.limit_extensions- Problem, das ich häufig sehe: Standardmäßig ist es auf .php gesetzt, genau das, was ich anfordere. Ich habe es ausdrücklich eingestellt
.php .html
, mit dem gleichen Ergebnis.
Ich habe es wirklich satt, ich habe dieses Setup bereits zweimal installiert (allerdings auf OSX-Rechnern) und alles hat einwandfrei funktioniert. Gibt es etwas, was ich übersehen habe?
Der Protokollinhalt:
Das Nginx-Fehlerprotokoll ist leer.
Nginx-Zugriffsprotokoll (entfernte IP-Adresse):
<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 "-" "-"
php-fpm log:
[17-Jul-2012 10:44:14] NOTICE: fpm is running, pid 4969
[17-Jul-2012 10:44:14] NOTICE: ready to handle connections
chown
Problem.cgi.fix_pathinfo
auf 0 (Standardkonfiguration) gesetzt.cgi.fix_pathinfo = 0
wird von vielen Tutorials empfohlen, da es dabei hilft, Schwachstellen zu minimieren, insbesondere Schwachstellen, bei denen PHP-Code über beliebige Dateien ausgeführt wird. Wenn Sie dies auf 1 setzen, stellen Sie sicher, dass Sie wissen, was Sie tun, oder geben Sie andere Abhilfemaßnahmen an, um dies auszugleichen. Ich fand diesen Beitrag gut erklärt: nealpoole.com/blog/2011/04/…