nginx + PHP-FPM = помилка "відхилено дозвіл" 13 у журналі nginx; помилка конфігурації?


20

У мене nginx 0.7x + PHP-FPM працює під PHP 5.2.10 на одному сервері RHEL5, але намагаюся дублювати цю установку під вбудованим PHP-FPM в PHP 5.3.3 на другому сервері, у мене є деякі проблеми з помилками дозволу щоразу, коли є GET.

FPM запускається і підтверджує, що fastcgi прослуховує 9000, але щоразу, коли я GET, я бачу цю помилку в журналі nginx:

2010/08/12 23:38:53 [crit] 5019#0: *5 stat() "/home/noisepages/www/" failed (13: Permission denied), client: 24.215.173.141, server: dev.noisepages.com, request: "GET / HTTP/1.1", host: "dev.noisepages.com"

Barebones nginx.conf.default працює, принаймні. Ось мій nginx.conf

server {
        listen       80;
        server_name  dev.noisepages.com;
        root   /home/noisepages/www;
        index  index.html index.htm index.php;

        access_log  logs/dev.access.log;
 error_log logs/dev.error.log;

        location / {

 if (-f $request_filename) {
  expires 30d;
  break;
  }

 # this sends all non-existing file or directory requests to index.php
 rewrite ^.*/files/(.*) /wp-includes/ms-files.php?file=$1;
 if (!-e $request_filename) {
     rewrite ^.+?(/wp-.*) $1 last;
  rewrite ^.+?(/.*\.php)$ $1 last;
  rewrite ^ /index.php last;
  }
        }

        location ~ \.php$ {
            include        fastcgi_params;
            fastcgi_pass   unix:/dev/shm/php-fastcgi.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME    /home/dev/www/$fastcgi_script_name;
        }
    }

(Додаткові директиви перезапису призначені для використання багатостороннього сайту WordPress aka WordPress MU)

Я також переконався, що www-дані користувача оголошуються не лише у nginx.conf, але й у php-fpm.conf для значень користувачів та груп.

Можливо, я не розумію, що викликає повідомлення про помилку 13? Як не дивно, я намагався налаштувати dev.noisepages.com на перший сервер паралельно з парою інших віртуальних хостів - кожен з яких працював чудово - і мав однакову помилку.

Відповіді:


57

Ви повинні переконатися , що ви маєте +xна все каталоги в шляху , що ведуть до кореню сайту - так /home, /home/noisepagesі/home/noisepages/www


2
Так, насправді www мав правильні дозволи, але не весь шлях! Спасибі! Має сенс - глупа помилка з мого боку.
Пітер Кірн

1
Якби я міг дати тобі ще 10 грошей, я би.
Тим

Ви справді круті! Я проводжу 2 години в Google, щоб знайти вашу відповідь! Дякую!
Сергій Поліщук

Дуже дякую! Я возився на виробничому сервері, і я тонув у холодному поті, коли це сталося ...!
lephleg

5

переконайтеся, що / home / dev має правильні дозволи

chmod +x /home/dev

2

У мене виникли проблеми з дозволами в php-fpm, зокрема, з сеансами php. Виявилося, що я просто повинен був змінити користувача, який php-fpm використовує для запуску процесів, оскільки за замовчуванням його встановлено на "ніхто" користувача.

посібник про нього тут: http://www.duchnik.com/tutorials/setting-up-php-with-nginx/


3
Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Скотт Пак

3
Посилання мертва ..
Крістоф Бюлер

1

У мене була симпатична проблема, яка потрапила сюди. Моє рішення (на основі обраної відповіді) було зробити

chown -R root:www-data /home/noisepages/www
chmod g+w -R /home/noisepages/www

Зараз це працює чудово :)


Але як це зробити, якщо ви користуєтеся користувачами Chroot? Під час використання хронованих користувачів папка / home / user / www повинна належати користувачеві, і це не працює.
Вінсент ЛІТУР

Вибачте, я не знаю :(
Скотт Уоррен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.