Nginx / PHP-FPM “Erişim reddedildi.” hata


14

Yeni kurulmuş bir Ubuntu (12.04) sunucusu kurmaya çalışıyorum, ancak php-fpm üzerinden çalışan PHP dosyaları alamıyorum. Ne yaparsam yapayım, daima bir "Erişim reddedildi." sayfası (düz metin, html veya başka bir şey değil).

Kurulu paketler:

nginx
nginx-common
nginx-full
php5
php5-cli
php5-common
php5-fpm

Yapılandırma ayrıntıları:

PHP-FPM:

user = www-data
group = www-data
listen = /var/run/php5-fpm.sock

nginx:

user www-data;
worker_processes 3;
events { worker_connections 1024; }

Varsayılan / test alanı:

server {
    listen       80;
    server_name  localhost;
    root         /extra/htdocs/default;
    index        index.html index.php

    access_log   /extra/logs/default/access.log;
    error_log    /extra/logs/default/error.log;

    location / {
        try_files  $uri $uri/ /index.html;
    }

    location ~ \.php
    {
        fastcgi_split_path_info  ^(.+\.php)(/.+)$;

        include fastcgi_params;

        fastcgi_index   index.php;
        fastcgi_pass    unix:/var/run/php5-fpm.sock;
        fastcgi_param   PATH_INFO         $fastcgi_path_info;
        fastcgi_param   PATH_TRANSLATED   $document_root$fastcgi_path_info;
        fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    }
}

/extra/htdocs/default/index.php:

<?php
phpinfo();

Diğer her şey varsayılan değerdir. Hem Nginx hem de php-fpm günlüklerinde hata yok. Ancak yüklediğimde http://<server-ip>/index.php"Erişim reddedildi" sayfasını alıyorum.

Sorun giderme:

  • İndex.html dosyası gayet iyi çalışıyor. Bu nedenle ya php-fpm ya da Nginx ve php-fpm arasındaki fastcgi bağlaması olmalıdır.
  • Sadece emin olmak için tüm /extradizinin sahipliğini (hem kullanıcı hem de grup) www-datave sahipliğini 777 olarak ayarladım (elbette işe yaradığında bir kez tonlayacağım). Bu yüzden kesinlikle bir izin sorunu değil
  • Çok şey gördüğüm security.limit_extensions sorunu değil : varsayılan olarak tam olarak istediğim şey .php olarak ayarlanmıştır. Açıkçası .php .html, aynı sonuçla ayarladım .

Bundan gerçekten yoruldum, bu kurulumu iki kez kurdum (OSX makinelerinde de olsa) ve her şey kusursuz çalıştı. Göz ardı ettiğim bir şey var mı?

Günlük içeriği:

Nginx hata günlüğü boş.

Nginx erişim günlüğü (ip kaldırıldı):

<ip> - - [17/Jul/2012:11:21:25 +0200] "GET /favicon.ico HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"
<ip> - - [17/Jul/2012:11:21:28 +0200] "GET /index.php HTTP/1.1" 403 46 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"
<ip> - - [17/Jul/2012:11:21:34 +0200] "-" 400 0 "-" "-"

php-fpm günlüğü:

[17-Jul-2012 10:44:14] NOTICE: fpm is running, pid 4969
[17-Jul-2012 10:44:14] NOTICE: ready to handle connections

Yanıtlar:


33

Sonunda düzelttim.

Suçlu benim yapılandırma bu satırdı:

fastcgi_param   PATH_TRANSLATED     $document_root$fastcgi_path_info;

Bu çizgiye yorum yaparsam, her şey yolunda gitti. Ancak bunu Nginx yapılandırmaları hakkında okuduğum hemen hemen her yazıda gördüm, bu yüzden beni rahatsız etti. Milyonlarca kez yapılandırmalarıma bakarken, 1 olması gerektiği yerde cgi.fix_pathinfo(in php.ini) 0 olarak ayarlandığını gördüm. PHP'nin kullandığı varsayılan değer de 1'dir, bu yüzden hata ayıklama saatlerimde bunu değiştirmiş olmalıyım çünkü bu değeri okuduğunuzu hatırlayın ve doğru ayarlandığını düşündüm.

Her neyse, belki bu sorun için Google çalışan herkes yardımcı olur.


5
Çözümü paylaştığınız için teşekkürler. Bu öğreticiler güvenli olmayan yapılandırmalar içerebileceğinden , eğiticilere güvenmemeniz önerilir . Bu yapılandırmalar yine de doğru şekilde çalışabilir.
Pothi Kalimuthu

Bağlantı için teşekkürler, birkaç kez karşılaştım ve bu talimatları uyguladım. Hata ayıklama öfkemdeki hata muhtemelen benim oldu (x saat sonra değiştirdiğiniz bazı şeyleri izlemeye başlıyorsunuz).
Peter Kruithof

Benimki bir chownsorundu.
Jürgen Paul

Çok teşekkür ederim. Saatlerce bu sorun üzerinde çalışıyor ve cgi.fix_pathinfo0 (varsayılan yapılandırma) olarak ayarlandı sorun.
Mauvis Ledford

2
cgi.fix_pathinfo = 0güvenlik açıklarını, özellikle de php kodunu rasgele dosyalar aracılığıyla yürüten güvenlik açıklarını azaltmaya yardımcı olduğu için birçok öğretici tarafından önerilir. Bu yüzden bunu 1 olarak ayarlarsanız, ne yaptığınızı bildiğinizden emin olun veya telafi etmek için diğer azaltımları belirtin. Bu gönderiyi
MikeD
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.