Nginx / FPM / PHP semua file php mengatakan 'File tidak ditemukan.'

8

saya baru saja menginstal nginx 1.1.13 dan php 5.4.0 pada mesin centos 5.8 final 64bit. Nginx dan PHP / Fpm sedang berjalan, dan saya bisa menjalankan skrip php melalui ssh command line, tetapi di browser saya terus mendapatkan 'File not found.' kesalahan pada semua file PHP saya.

Ini adalah bagaimana saya membuat nginx.conf saya menangani skrip PHP:

      location ~ \.php$
      {
              root                    /opt/nginx/html;
              fastcgi_pass            unix:/tmp/fpm.sock;
              fastcgi_index           index.php;
              fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
              include                 fastcgi_params;
      }

Ini adalah copy / paste langsung dari server saya yang lain, di mana ia berfungsi dengan baik dengan pengaturan ini (tetapi mereka menjalankan versi php / fpm yang lebih lama).

Mengapa saya mendapatkan kesalahan itu?

Mr.Boon
sumber
1
Sudahlah, sudah diurutkan. Itu masalah izin konyol.
Mr.Boon

Jawaban:

17

Masukkan "sertakan fastcgi_params;" sebelum semua "fastcgi_param *" lines, "sertakan fastcgi_params;" mengganti semua baris "fastcgi_param *" Anda (lihat nginx debug log):

location ~ \.php$ {
    root                    /opt/nginx/html;
    fastcgi_pass            unix:/tmp/fpm.sock;
    fastcgi_index           index.php;
    include                 fastcgi_params;
    fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
}
mingalevme
sumber
3
Sobat, saya sudah membuang waktu 4 jam untuk itu dan jawaban Anda membantu saya.
ahli
Saya sudah mencoba mengatasi masalah ini sejak kemarin. Jawaban Anda sangat membantu saya! Terima kasih!!!
Kacper Kołodziej
1
bagaimana kita melakukan ini tanpa hardcoding jalan? Vars $ document_root tampaknya tidak berliku?
user1179459
3

Saya memiliki masalah yang sama.

Apa yang saya lakukan untuk menyelesaikan ini adalah memeriksa pengguna yang menjalankan nginx, php-fpm dan memeriksa izin mereka untuk mengakses folder di mana root berada. Ini adalah 'data-www' default.

tetapi Anda bisa mengetahuinya dengan menggunakan perintah ps aux | grep php-fpmdan ps aux | grep nginx.

Anda harus memastikan folder tersebut dapat diakses oleh pengguna yang menjalankan proses ini.

miog
sumber
Terima kasih atas petunjuknya. Saya mencoba meng-host proyek saya jauh di dalam direktori Dropbox saya, yang secara default memiliki 700 izin. Mengubah izin Dropbox ke 755 menyelesaikan masalah.
Rodion Baskakov
1

Saya memiliki masalah yang sama, dan bagi saya itu adalah perintah "root" yang salah konfigurasi / tidak ada di konfigurasi server nginx

Xosofox
sumber
1

Saya menggunakan konfigurasi seperti itu, semoga bisa membantu Anda. Ia bekerja di OS X. Bagi saya, jawaban @Xosofox bekerja. Saya salah mengetik versi nginx 1.6.2 sebagai 1.2.6, sehingga root menjadi direktori yang tidak ada.

location ~ \.php$ {
    fastcgi_intercept_errors on;
    root           /usr/local/Cellar/nginx/1.6.2/html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME /usr/local/Cellar/nginx/1.6.2/html$fastcgi_script_name;
}
Hangchen Yu
sumber
0

Saya mengatasi masalah ini dengan mengubah pengguna dan grup menjadi pengguna saat ini: grup di php-fpm.d / www.conf

Secara default, pengguna dan grup adalah 'nginx', ubah ....

Semoga ini membantu

Pedro Vasconcelos
sumber