Próbuję skonfigurować świeżo zainstalowany serwer Ubuntu (12.04), ale nie mogę uruchomić plików PHP przez php-fpm. Bez względu na to, co robię, zawsze pojawia się komunikat „Odmowa dostępu”. strona (zwykły tekst, a nie HTML lub cokolwiek).
Zainstalowane pakiety:
nginx
nginx-common
nginx-full
php5
php5-cli
php5-common
php5-fpm
Szczegóły konfiguracji:
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; }
Domena domyślna / testowa:
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();
Cała reszta jest domyślna. Zarówno dzienniki Nginx, jak i php-fpm nie wykazują błędów. Jednak po załadowaniu pojawia http://<server-ip>/index.php
się strona „Odmowa dostępu”.
Rozwiązywanie problemów:
- Plik index.html działa dobrze. Dlatego musi to być albo php-fpm, albo wiązanie fastcgi między Nginx i php-fpm.
- Dla pewności ustawiłem własność (zarówno użytkownika, jak i grupę) na cały
/extra
katalogwww-data
, a własność na 777, tylko dla pewności (obniżę go, gdy to zadziała). Z pewnością nie jest to kwestia uprawnień - To nie jest kwestia security.limit_extensions , którą często widzę: domyślnie jest ustawiona na .php, dokładnie o to proszę. Wyraźnie ustawiłem to
.php .html
, z tym samym rezultatem.
Naprawdę mam tego dość, już dwukrotnie instalowałem tę konfigurację (choć na maszynach OSX) i wszystko działało bezbłędnie. Czy jest coś, co przeoczam?
Zawartość dziennika:
Dziennik błędów Nginx jest pusty.
Dziennik dostępu Nginx (usunięty adres IP):
<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 "-" "-"
dziennik 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
problemem.cgi.fix_pathinfo
ustawiłem na 0 (konfiguracja domyślna) był problemem.cgi.fix_pathinfo = 0
jest zalecany przez wiele samouczków, ponieważ pomaga złagodzić luki, szczególnie luki w zabezpieczeniach wykonujących kod php za pośrednictwem dowolnych plików. Więc jeśli ustawisz tę wartość na 1, upewnij się, że wiesz, co robisz lub określ inne środki zaradcze, które to nadrobią. Znalazłem ten post, który zawiera dobre wyjaśnienie tego problemu: nealpoole.com/blog/2011/04/…