2013-09-27 13 views
32

मैं .htaccess वाले फ़ोल्डर को अवरुद्ध करने पर काम कर रहा हूं, जिसे मैंने पहले कभी नहीं उपयोग किया है, और मुझे कुछ परेशानी हो रही है।.htaccess/.htpasswd 500 आंतरिक सर्वर त्रुटि

AuthName "Username and password required" 
AuthUserFile /.htpasswd 
Require valid-user 
AuthType Basic 

.htpasswd (रूट पर स्थित है, पासवर्ड वास्तविक फ़ाइल में एन्क्रिप्टेड है):

tim:blah 

मैं यहाँ है कि मैं क्या

.htaccess (फ़ोल्डर मैं अवरुद्ध करना चाहते हैं में स्थित है) है मुझे इसके साथ 500 आंतरिक सर्वर त्रुटियां मिल रही हैं और मैं यह नहीं समझ सकता कि क्यों।

AuthUserFile /.htpasswd 

इस लाइन जैसे पासवर्ड फाइल करने के लिए पूर्ण फाइल सिस्टम पथ प्रदान करना चाहिए:

+2

आपके लिए '/ .htpasswd' क्या है, '/ home/youraccout/public_html' के अंदर एक फ़ाइल या वास्तव में फ़ाइल सिस्टम की मुख्य निर्देशिका' /' पर स्थित है? – Prix

+0

आपके अपाचे त्रुटि लॉग क्या कहते हैं? –

+0

मैं अपने मेजबान के माध्यम से त्रुटि लॉग तक नहीं पहुंच सकता = (और मेरी .htpasswd फ़ाइल सबसे ऊपर वाले फ़ोल्डर में है जो मैं एक्सेस कर सकता हूं, यह मेरे pubic_html फ़ोल्डर –

उत्तर

82

सबसे अधिक संभावना समस्या इस लाइन है

AuthUserFile /var/www/.htpasswd 

अपने फाइल सिस्टम पथ की खोज के लिए, आपको युक्त

echo $_SERVER['DOCUMENT_ROOT'];

+0

में नहीं है। Htpasswd सबसे ऊपर वाले फ़ोल्डर में है जिसे मैं –

+3

तक पहुंच सकता हूं, यह भी सुनिश्चित करें कि ' .htpasswd' समूह और अन्य लोगों द्वारा लिखित नहीं है। – anubhava

+4

घर पथ मिला। मेरा मेजबान प्रकार मुझसे छुपा जरूरी जानकारी। धन्यवाद। –

2

अनुमतियां इस मुद्दे भी पैदा कर सकता है एक PHP दस्तावेज़ बना सकते हैं।

सुनिश्चित करें कि .htpasswd वेब सर्वर उपयोगकर्ता द्वारा पठनीय है।

उदाहरण के लिए, यदि आप nginx का उपयोग nginx.conf जाँच पता लगाने के लिए क्या सर्वर उपयोगकर्ता है, यदि आप अपाचे का उपयोग आप इसे प्राप्त कर सकते हैं this way, आदि

फिर सही मालिकों .htpasswd को अनुमति सेट और पढ़ें

5

तो कुछ भी नहीं है मदद की है और आप PHP का उपयोग कर रहे आप इसे अपने index.php में इस डाल कर काम कर सकते हैं (ऊपर):

if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) { 
    if ($_SERVER['PHP_AUTH_USER'] != 'user' || 
     $_SERVER['PHP_AUTH_PW'] != 'pass') { 

     header('WWW-Authenticate: Basic realm="Protected area"'); 
     header('HTTP/1.0 401 Unauthorized'); 

     die('Login failed!'); 
    } 
} 
0

मैं भी जोड़ना होगा कि कुछ वेब होस्ट पर कुछ, सार्वजनिक रूप से सुलभ क्षेत्र में रखे जाने पर। htpasswd फ़ाइल काम नहीं करेगी। एक हालिया स्थापना मैंने पुष्टि की है। जैसा कि अन्य ने ध्यान दिया है, साइट के रूट में इसे रखना सबसे अच्छा है।

+0

"...साइट की जड़ में इसे रखने के लिए सबसे अच्छा "- आपका आखिरी वाक्य आपके पहले विरोधाभास प्रतीत होता है (" रूट "मानते हुए आपका मतलब _document root_ है)? जैसा कि आप सुझाव देते हैं, यह फ़ाइल आदर्श रूप से सार्वजनिक रूप से सुलभ क्षेत्र के बाहर होनी चाहिए। _above_ दस्तावेज़ रूट। – MrWhite

संबंधित मुद्दे