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 multisite aka WordPress MU)

ฉันยังตรวจสอบแล้วว่าผู้ใช้ www-data ไม่ได้ประกาศเฉพาะใน nginx.conf แต่ยังอยู่ใน php-fpm.conf สำหรับค่าผู้ใช้และกลุ่ม

บางทีฉันไม่เข้าใจสิ่งที่ทำให้เกิดข้อผิดพลาด 13 ข้อความ? ผิดปกติพอฉันพยายามตั้งค่า dev.noisepages.com บนเซิร์ฟเวอร์แรกขนานกับโฮสต์เสมือนอื่นสองสามแห่ง - ซึ่งแต่ละตัวทำงานได้ดี - และได้รับข้อผิดพลาดเดียวกัน

คำตอบ:


57

คุณต้องแน่ใจว่าคุณมี+xในทุกไดเรกทอรีในเส้นทางที่นำไปสู่รากของเว็บไซต์ - ดังนั้น/home, /home/noisepagesและ/home/noisepages/www


2
ใช่อันที่จริง www มีสิทธิ์ที่ถูกต้อง แต่ไม่ใช่เส้นทางทั้งหมด! ขอบคุณ! ทำให้รู้สึก - ผิดพลาดโง่ในส่วนของฉัน
Peter Kirn

1
ถ้าฉันสามารถให้ 10 upvote อีกฉันจะ
Tim

คุณเจ๋งจริงๆ! ฉันใช้เวลา 2 ชั่วโมงใน google เพื่อค้นหาคำตอบของคุณ! ขอขอบคุณ!
Serhii Polishchuk

ขอบคุณมาก! ฉันล้อเล่นบนเซิร์ฟเวอร์ที่ใช้งานจริงและฉันก็รู้สึกงุนงงเมื่อมันเกิดขึ้น ... !
lephleg


2

ฉันมีปัญหาเกี่ยวกับการอนุญาตใน php-fpm เช่นกันโดยเฉพาะกับเซสชัน php มันกลับกลายเป็นว่าฉันแค่ต้องปรับเปลี่ยนผู้ใช้ที่ php-fpm ใช้เพื่อเรียกใช้กระบวนการตั้งแต่เริ่มต้นมันถูกตั้งค่าเป็นผู้ใช้ "ไม่มีใคร"

สอนเกี่ยวกับมันที่นี่: http://www.duchnik.com/tutorials/setting-up-php-with-nginx/


3
ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Scott Pack

3
ลิงก์นั้นตายแล้ว ..
Christoph Bühler

1

ฉันมีปัญหาเรื่องซิมลาร์ โซลูชันของฉัน (ตามคำตอบที่เลือก) ทำ

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

ตอนนี้มันใช้งานได้ดี :)


แต่คุณจะทำอย่างไรถ้าคุณใช้ผู้ใช้ Chroot? เมื่อใช้ผู้ใช้แบบ chrooted โฟลเดอร์ / home / user / www ต้องเป็นของผู้ใช้และไม่สามารถใช้งานได้
Vincent LITUR

ขออภัยฉันไม่รู้ :(
Scott Warren
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.