Nginx / PHP-FPM "प्रवेश निषेध" त्रुटि


14

मैं एक नया स्थापित उबंटू (12.04) सर्वर स्थापित करने का प्रयास कर रहा हूं, लेकिन मैं PHP फ़ाइलों को php-fpm के माध्यम से नहीं चला सकता। कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, मुझे हमेशा "प्रवेश निषेध" मिलता है। पृष्ठ (सादा पाठ, html या कुछ भी नहीं)।

स्थापित पैकेज:

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

कॉन्फ़िगरेशन विवरण:

पीएचपी-एफ पी एम:

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

nginx:

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

डिफ़ॉल्ट / परीक्षण डोमेन:

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();

बाकी सब कुछ डिफ़ॉल्ट है। Nginx और php-fpm दोनों लॉग कोई त्रुटि नहीं दिखाते हैं। फिर भी जब मैं लोड करता http://<server-ip>/index.phpहूं तो मुझे "प्रवेश निषेध" पृष्ठ मिलता है।

समस्या निवारण:

  • Index.html फ़ाइल ठीक काम करती है। इसलिए यह या तो php-fpm होना चाहिए, या Nginx और php-fpm के बीच बांधने वाली Fastcgi।
  • मैंने पूरी /extraनिर्देशिका के स्वामित्व (उपयोगकर्ता और समूह दोनों) को www-dataऔर 777 को स्वामित्व निर्धारित किया है , बस सुनिश्चित करने के लिए (मैं इसे काम करने के बाद इसे बंद कर दूँगा)। तो यह निश्चित रूप से एक अनुमति मुद्दा नहीं है
  • यह Security.limit_extensions समस्या नहीं है जिसे मैं बहुत कुछ देखता हूं: डिफ़ॉल्ट रूप से .php पर सेट किया गया है, जो कि वास्तव में मैं अनुरोध कर रहा हूं। मैंने स्पष्ट रूप से इसे .php .htmlउसी परिणाम के साथ सेट किया है ।

मैं वास्तव में इस से थक गया हूँ, मैंने इस सेटअप को पहले से ही दो बार स्थापित किया है (यद्यपि OSX मशीनों पर), और सब कुछ त्रुटिपूर्ण रूप से काम किया। वहाँ कुछ भी मैं देख रहा हूँ?

लॉग सामग्री:

Nginx त्रुटि लॉग खाली है।

Nginx एक्सेस लॉग (हटाए गए आईपी):

<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 लॉग:

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

जवाबों:


33

अंत में इसे ठीक कर दिया।

अपराधी मेरे विन्यास में यह पंक्ति थी:

fastcgi_param   PATH_TRANSLATED     $document_root$fastcgi_path_info;

अगर मैंने इस लाइन पर टिप्पणी की, तो सब कुछ ठीक रहा। हालाँकि मैंने इसे लगभग हर उस पोस्ट में देखा था जिसे मैंने Nginx config के बारे में पढ़ा था, इसलिए इसने मुझे परेशान कर दिया। जब मैं दसवीं बार अपने विन्यास को देख रहा था, तो मैंने देखा कि cgi.fix_pathinfo(में php.ini) 0 पर सेट किया गया था, जहाँ यह 1 होना चाहिए था। डिफ़ॉल्ट मान PHP उपयोग भी 1 है, इसलिए मैंने इसे अपने डीबगिंग घंटों में बदल दिया होगा, क्योंकि मैं इस मूल्य के बारे में पढ़ना याद रखें, और सोचा कि यह सही है।

वैसे भी, शायद यह किसी को भी इस मुद्दे के लिए Googling में मदद करता है।


5
समाधान साझा करने के लिए धन्यवाद। यह अनुशंसा की जाती है कि वे ट्यूटोरियल पर भरोसा न करें क्योंकि उन ट्यूटोरियल में असुरक्षित कॉन्फ़िगरेशन हो सकते हैं। उन विन्यास अभी भी सही ढंग से काम कर सकते हैं, यद्यपि।
पोथी कालीमुथु

लिंक के लिए धन्यवाद, मैं उस समय आया और उन निर्देशों को लागू किया। गलती शायद मेरी खुद की डिबगिंग राग में थी (एक्स घंटों के बाद आप कुछ ऐसी चीजों का ट्रैक खोना शुरू कर देते हैं जिन्हें आपने बदल दिया है)।
पीटर क्रुथोफ

मेरा एक chownमुद्दा था ।
जुरगेन पॉल

बहुत बहुत धन्यवाद। इस समस्या पर घंटों तक काम किया और cgi.fix_pathinfo0 पर सेट किया गया (डिफ़ॉल्ट कॉन्फ़िगरेशन) समस्या थी।
मावी लेडफोर्ड

2
cgi.fix_pathinfo = 0बहुत सारे ट्यूटोरियल द्वारा सिफारिश की जाती है क्योंकि यह कमजोरियों को कम करने में मदद करता है, विशेष रूप से मनमानी फाइलों के माध्यम से php कोड को निष्पादित करने वाली कमजोरियों। इसलिए यदि आप इसे 1 पर सेट करते हैं, तो सुनिश्चित करें कि आप जानते हैं कि आप क्या कर रहे हैं या इसके लिए अन्य शमन को निर्दिष्ट करें। : मैं इस मुद्दे पर एक अच्छा स्पष्टीकरण के लिए इस पोस्ट पाया nealpoole.com/blog/2011/04/...
miked
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.