NGINX PHP dosyalarını yürütmüyor


9

Bunun için bir cevap bulamadım. Yüklü PHP5 + NGINX + PHP-FPM ve php dosyalarını çalıştıramazsınız, bir "Hata! Bu bağlantı kopmuş gibi görünüyor." CHROME içinde hata. Herhangi bir değerli hata günlüğü raporu yok, ben kök bir index.php var, ne işe yaramadı, özel bir phpinfo.php dosyası oluşturmaya çalıştı.

I DO HTML dosyaları yükleyebilirsiniz, ancak PHP cant.

İşte benim NGINX yerel site yapılandırma:

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

}

Tüm dizinin sahipliği www-data olarak değiştirildi: www-data, php dosyasında 777, hiçbir şey yapmadı. Yeniden başlatıldı nginx, FPM, hiçbir şey.

Yardım? :(


hata günlüğünüze bakın
Mike

Zaten, "Herhangi bir değerli hata günlüğü raporum yok". Tamamen boş.
Gabriel A. Zorrilla

Sorunu teşhis etmek için daha fazla veriye ihtiyacınız var. 'Fastcgi_intercept_errors on'; FPM hatalarını günlüğe kaydetmek için yapılandırmanıza (fastcgi_params'da değilse) gidin. Ayrıca, daha fazla ayrıntı elde etmek için error_log satırınıza 'debug' ekleyin (ayrıca ana nginx error_log (muhtemelen / var / log içinde)). Sunucu_adı direktifiniz olağandışı görünüyor - bu gönderi için değiştirdiğinizden veya aslında böyle olduğundan emin değilsiniz. Genel bir öneri olarak, kök yönergelerinizi konum bloğunuzun dışına taşıyın. (Son (olası) öneri: varsayılan sunucunuzun görebileceğiniz html sayfalarını sunmadığından emin olun).
cyberx86

Yanıtlar:


9

"Hata! Bu bağlantı kopmuş gibi görünüyor." CHROME içinde hata.

Hata sayfası 512 bayttan azsa Chrome kendi hata sayfasını gösterir.

Ben şu satırda olduğundan şüpheleniyorum fastcgi_params:

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

ve eğer öyleyse, rootdirektifin tanımlandığı location /için asla uygulanmayacaktır location ~ \.php$, dolayısıyla SCRIPT_FILENAMEURI olur.

Bu, rootdirektifi serverseviye bağlamına taşıyarak çözülebilir :

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. Sunucu bloğunun önerildiği ve çalıştığı gibi kök taşındı. Teşekkürler!
Gabriel A. Zorrilla

@quanta: OP sorusundaki yapılandırmayı düzenledi mi? Sabit kodlu bir yol olduğundan, kök yönergesi konum bağlamında tanımlandığında yine de mükemmel şekilde çalışmalıdır. Çalışmayacağı tek durum, $ document_root kullanarak fastcgi_params dosyasında SCRIPT_FILENAME öğesini tanımlaması ve böylece sabit kodlu olanını geçersiz kılmasıydı.
Martin Fjordvald

@MartinF: Hayır, OP yapılandırmayı düzenlemedi. Haklısın. Cevabımı düzenleyeceğim.
quanta

-3

Benim durumumda php-zip paketi eksikti. Bunu düzeltmek için koştum:

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

3
Görünüşe göre OP'nin nedeni tamamen başka bir şey içindi.
Sven

Bu, bu sorunla bu sayfaya giden yolu bulan OP ile aynı nedene sahip olacağı anlamına gelmez, biz çok iyi bir nedene sahip olabilir ve bu cevabı faydalı bulabilir. Soru bu nedene özgü değildir, o belirtiye özgüdür ve açıkçası bunun birçok nedeni vardır, bu nedenle farklı nedenlere sahip insanlar burada ortaya çıkabilir.
Synetech

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

4
Sunucu Arızasına Hoşgeldiniz! Görünüşe göre burada iyi bir cevap verecek bilgiye sahip olabilirsiniz, ancak lütfen okumayı düşünün İyi bir cevabı nasıl yazarım? ve ardından Yanıtınızı gözden geçirin ve genişletin. Komutlarınız / Kodunuz / Ayarlarınız teknik olarak çözüm olabilir, ancak bazı açıklamalar hoş geldiniz. Şimdiden teşekkürler.
HBruijn

4
Ayrıca: bu bir satır sorunu çözse bile nereye gider? OP iki tane gösterir locations. Hat bir arada mı? Diğeri? Her ikisi de? Cevabınızı tamamlamak için lütfen yanıtınızı düzenleyin.
David Makogon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.