NGINX tidak menjalankan file PHP


9

Saya tidak dapat menemukan jawaban untuk ini. Dipasang PHP5 + NGINX + PHP-FPM dan tidak dapat mengeksekusi file php, itu mendapat "Ups! Tautan ini tampaknya rusak." kesalahan dalam CHROME. Saya tidak punya laporan log kesalahan yang berharga, saya punya index.php di root, mencoba membuat file phpinfo.php khusus, tidak berfungsi.

Saya DO dapat memuat file HTML, tetapi tidak bisa PHP.

Ini adalah konfigurasi situs lokal saya di NGINX:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    location / {
        root   /var/www/website;
        index  index.html index.htm index.php;
    }


    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/website$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

}

Mengubah kepemilikan semua direktori menjadi www-data: www-data, membuat 777 pada file php, tidak ada. Mulai ulang nginx, FPM, tidak ada.

Tolong? :(


lihat di log kesalahan Anda
Mike

Sudah melakukannya, "Saya tidak punya laporan log kesalahan yang berharga". Itu benar-benar kosong.
Gabriel A. Zorrilla

Anda memerlukan lebih banyak data untuk mendiagnosis masalahnya. Saya menyarankan memulai dengan menambahkan 'fastcgi_intercept_errors pada;' ke config Anda (jika tidak di fastcgi_params) untuk mencatat kesalahan FPM. Juga tambahkan 'debug' ke baris error_log Anda untuk mendapatkan lebih banyak detail (juga periksa nginx error_log utama (mungkin di / var / log)). Arahan server_name Anda terlihat tidak biasa - tidak yakin apakah Anda menggantinya untuk posting ini atau memang seperti itu. Sebagai rekomendasi umum, pindahkan arahan root Anda keluar dari blok lokasi Anda. (Final (tidak mungkin) saran: pastikan server default Anda tidak melayani halaman html yang dapat Anda lihat).
cyberx86

Jawaban:


9

itu mendapat "Ups! Tautan ini tampaknya rusak." kesalahan dalam CHROME.

Chrome menunjukkan halaman kesalahannya sendiri jika halaman kesalahan kurang dari 512 byte.

Saya menduga Anda memiliki baris berikut di fastcgi_params:

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

dan jika demikian, karena rootarahan yang didefinisikan dalam location /tidak akan pernah diterapkan location ~ \.php$, dengan demikian SCRIPT_FILENAMEmenjadi URI.

Ini bisa diselesaikan dengan memindahkan rootarahan ke serverkonteks level:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    root   /var/www/website;

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

}

Bingo. Pindah root blok server seperti yang disarankan dan berfungsi. Terima kasih!
Gabriel A. Zorrilla

@quanta: Apakah OP mengedit konfigurasi dalam pertanyaannya? Karena ini adalah lintasan hardcoded, ia masih harus bekerja dengan baik ketika arahan root didefinisikan dalam konteks lokasi. Satu-satunya kasus di mana itu tidak akan berhasil adalah jika ia mendefinisikan SCRIPT_FILENAME dalam file fastcgi_params menggunakan $ document_root dan dengan demikian menimpa yang hardcodenya.
Martin Fjordvald

@ MartinF: Tidak, OP tidak mengedit konfigurasi. Kamu benar. Saya akan mengedit jawaban saya.
quanta

-3

Dalam kasus saya tidak ada paket php-zip. Untuk memperbaiki ini, saya berlari:

yum install -y php-zip
systemctl restart php-fpm nginx

3
Rupanya, penyebab OP adalah untuk hal lain sama sekali.
Sven

Itu tidak berarti bahwa seseorang yang menemukan jalannya ke halaman ini dengan masalah ini akan memiliki penyebab yang sama dengan OP, mereka mungkin memiliki penyebab yang wejdross lakukan dan menemukan jawaban ini bermanfaat. Pertanyaannya tidak spesifik untuk penyebab itu, itu spesifik untuk gejala itu, dan jelas ada beberapa penyebab untuk itu, sehingga orang dengan penyebab yang berbeda dapat berakhir di sini.
Synetech

-4
    fastcgi_pass unix:/var/run/php5-fpm.sock;

4
Selamat Datang di Kesalahan Server! Sepertinya Anda mungkin memiliki pengetahuan untuk memberikan Jawaban yang baik di sini, tetapi silakan mempertimbangkan membaca Bagaimana cara saya menulis Jawaban yang baik? di pusat bantuan kami dan kemudian merevisi dan memperluas Jawaban Anda. Perintah / Kode / Pengaturan Anda mungkin secara teknis menjadi solusi tetapi beberapa penjelasan diterima. Terima kasih sebelumnya.
HBruijn

4
Juga: bahkan jika satu baris itulah yang memecahkan masalah, kemana perginya? OP menunjukkan dua locations. Apakah garis masuk dalam satu? Yang lain? Kedua? Harap edit jawaban Anda untuk menyelesaikannya.
David Makogon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.