nginx + PHP-FPM = kesalahan "izin ditolak" 13 di nginx log; kesalahan konfigurasi?

20

Saya punya nginx 0.7x + PHP-FPM berjalan di bawah PHP 5.2.10 pada satu server RHEL5, tetapi mencoba untuk menduplikasi pengaturan itu di bawah PHP-FPM yang dibundel dalam PHP 5.3.3 pada server kedua, saya mengalami beberapa masalah dengan kesalahan izin setiap kali ada GET.

FPM dimulai, dan mengonfirmasi bahwa fastcgi mendengarkan pada 9000, tetapi setiap kali saya melakukan GET, saya melihat kesalahan ini di nginx log:

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 berfungsi, setidaknya. Ini nginx.conf saya

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;
        }
    }

(Arahan penulisan ulang tambahan adalah untuk penggunaan WordPress multisite alias WordPress MU)

Saya juga telah memverifikasi bahwa data pengguna www dideklarasikan tidak hanya di nginx.conf tetapi juga di php-fpm.conf untuk nilai-nilai pengguna dan grup.

Mungkin saya tidak mengerti apa yang menyebabkan pesan kesalahan 13? Anehnya, saya sudah mencoba mengatur dev.noisepages.com pada server pertama secara paralel dengan beberapa host virtual lainnya - yang masing-masing berfungsi dengan baik - dan mendapatkan kesalahan yang sama.

Peter Kirn
sumber

Jawaban:

57

Anda perlu untuk memastikan Anda memiliki +xpada semua direktori di jalan yang mengarah ke akar situs - begitu /home, /home/noisepagesdan/home/noisepages/www

beruang
sumber
2
Ya, sebenarnya www memiliki izin yang benar tetapi tidak seluruh jalur! Terima kasih! Masuk akal - kesalahan bodoh di pihak saya.
Peter Kirn
1
Jika saya bisa memberi Anda 10 upvotes lagi saya akan.
Tim
Kamu sangat keren! Saya menghabiskan 2 jam di google untuk menemukan jawaban Anda! Terima kasih!
Serhii Polishchuk
Terima kasih banyak! Saya mengacaukan server produksi dan saya berkeringat dingin ketika ini terjadi ...!
lephleg
5

pastikan / home / dev memiliki izin yang benar

chmod +x /home/dev
Mike
sumber
2

Saya punya masalah dengan izin di php-fpm juga, khususnya dengan sesi php. Ternyata saya hanya perlu memodifikasi pengguna yang digunakan php-fpm untuk menjalankan proses, karena secara default itu diatur untuk "tidak ada" pengguna.

tutorial di sini: http://www.duchnik.com/tutorials/setting-up-php-with-nginx/

rampok
sumber
3
Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Scott Pack
3
Tautannya sudah mati ..
Christoph Bühler
1

Saya punya masalah simlar yang membuat saya di sini. Solusi saya (berdasarkan jawaban yang dipilih) adalah melakukan a

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

Sekarang berfungsi dengan baik :)

Scott Warren
sumber
Tetapi bagaimana Anda bisa melakukannya jika Anda menggunakan pengguna Chroot? Saat menggunakan pengguna chroot, folder / home / user / www harus dimiliki oleh pengguna, dan tidak berfungsi.
Vincent LITUR
Maaf, saya tidak tahu :(
Scott Warren