Я пытаюсь настроить только что установленный сервер Ubuntu (12.04), но не могу запустить PHP-файлы через php-fpm. Независимо от того, что я делаю, я всегда получаю «Доступ запрещен». страница (обычный текст, не HTML или что-нибудь).
Установленные пакеты:
nginx
nginx-common
nginx-full
php5
php5-cli
php5-common
php5-fpm
Детали конфигурации:
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; }
Стандартный / тестовый домен:
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();
Все остальное по умолчанию. Журналы Nginx и php-fpm не показывают ошибок. Тем не менее, когда я загружаюсь, http://<server-ip>/index.php
я получаю страницу «Доступ запрещен».
Исправление проблем:
- Файл index.html работает просто отлично. Следовательно, это должно быть либо php-fpm, либо fastcgi-связывание между Nginx и php-fpm.
- Я установил для владельца (как пользователя, так и для группы) весь
/extra
каталогwww-data
, а для владельца - 777, чтобы быть уверенным (разумеется, я уменьшу его, как только он заработает). Так что это, конечно, не проблема с разрешениями - Я часто вижу не проблему security.limit_extensions : по умолчанию она установлена в .php, и это именно то, что я запрашиваю. Я явно установил его
.php .html
с тем же результатом.
Я действительно устаю от этого, я уже дважды установил эту настройку (хотя и на машины с OSX), и все работало безупречно. Есть что-нибудь, что я пропускаю?
Содержание журнала:
Журнал ошибок Nginx пуст.
Журнал доступа Nginx (удаленный 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 "-" "-"
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
проблема.cgi.fix_pathinfo
установил 0 (конфигурация по умолчанию).cgi.fix_pathinfo = 0
рекомендуется многими учебниками, потому что это помогает смягчить уязвимости, особенно уязвимости, выполняющие код php через произвольные файлы. Поэтому, если вы установите значение 1, убедитесь, что вы знаете, что делаете, или укажите другие меры по снижению риска, чтобы компенсировать это. Я нашел это сообщение с хорошим объяснением по этому вопросу: nealpoole.com/blog/2011/04/…