मैक ओएस एक्स में निर्मित अपाचे में 403 को कैसे ठीक करें?


25

मैं अपने नए मैकबुक एयर 13 पर एक स्थानीय वातावरण सेट करने का प्रयास कर रहा हूं ": अपने खुद के DocumentRoot, PHP, और MySQL के साथ निर्मित अपाचे में । मैं आमतौर पर /etc/hostsएक सुंदर Permalink के साथ अपनी स्थानीय वेबसाइटों को चलाने के लिए अपडेट करता हूं: local/exampleसंदर्भों के लिए, मैं आमतौर पर। चेक:

इस बार मैं बस एक हो रही है 403 निषिद्ध त्रुटि हर बार जब मैं मारा 127.0.0.1, localhost, या local। पहले मैंने टर्मिनल के माध्यम से देखा कि अपाचे और PHP दोनों चल रहे हैं (भले ही मैं PHP पृष्ठ नहीं देख सकता); फिर मैंने अपाचे अनुमतियों के अनुसार सभी अनुमतियां अपडेट कर दीं ; अब मैं बस हताश हूँ। यहाँ प्रासंगिक Apache विन्यास हैं:

ऐसा लगता है कि अपाचे किसी तरह मुझे अपनी पहुंच से वंचित कर रहा है DocumentRoot(जो वैसे भी है ~/Sites)। क्योंकि ~/Sitesवास्तव में एक सिम्लिंक है, मैंने तब DocumentRootनिम्न पथों के साथ अद्यतन करने का प्रयास किया (सभी उसी निर्देशिका की ओर इशारा करते हुए):

  • ~/Sites
  • /Users/joao/Sites
  • /Users/joao/Dropbox/Workflow/Sites( मूल निर्देशिका)

अभी भी 403 फेंक रहे हैं । किसी भी विचार कैसे तय करने के लिए / यह डिबग?

त्वरित अपडेट - यहाँ मेरे /var/log/apache2/joao.pt-error_logजैसा दिखता है:

[Sun Jul 07 12:50:45 2013] [error] [client 127.0.0.1] (13)Permission denied: access to / denied
[Sun Jul 07 12:50:45 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /favicon.ico denied
[Sun Jul 07 12:50:45 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /favicon.ico denied
[Sun Jul 07 12:50:45 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /favicon.ico denied
[Sun Jul 07 12:50:47 2013] [error] [client ::1] (13)Permission denied: access to / denied
[Sun Jul 07 12:50:47 2013] [error] [client ::1] (13)Permission denied: access to / denied
[Sun Jul 07 12:50:48 2013] [error] [client ::1] (13)Permission denied: access to /favicon.ico denied
[Sun Jul 07 12:50:48 2013] [error] [client ::1] (13)Permission denied: access to /favicon.ico denied

जवाबों:


19

मेरे पास उपयोगकर्ता निर्देशिका की ओर इशारा करते हुए OSX सर्वर में एक उपनाम है। मैंने _www उपयोगकर्ता के साथ मैसेजिंग और मैसेजिंग करते हुए एक लंबा समय बिताया, निष्पादन योग्य अनुमतियों को पुनरावर्ती रूप से जोड़ते हुए, मैकपोर्ट को अनइंस्टॉल करने और इसे प्राप्त करने के लिए सभी प्रकार के सामान को काम करने की कोशिश कर रहा है। पता नहीं क्यों यह काम नहीं कर रहा था।

आखिरकार, मैंने अभी उस फ़ोल्डर के लिए खोजक में "साझा फ़ोल्डर" चेकबॉक्स की जांच की, और यह निर्दिष्ट डोमेन पर, php सक्रिय, जिस तरह से मैं चाहता था, के साथ काम किया । : / ... इतना आसान था।


यह मेरे लिए काम नहीं किया। मैंने एक फ़ोल्डर बनाया /Sites(अपने रूट /फ़ोल्डर में) और अपनी फ़ाइलों को वहां रखा, तदनुसार उपनाम और निर्देशिका विकल्पों को कॉन्फ़िगर किया। ठीक काम किया।
जेपन्ना

11

मैं macOSS सिएरा , संस्करण 10.12 में अद्यतन करता हूं

मैं एक ही मुद्दे का सामना करता हूं, मैंने इसे ठीक करने के लिए दो चीजें कीं। निम्नलिखित मेरे दृष्टिकोण है।

1) कृपया "/ p तंत्र /etc/apache2/extra/httpd-userdir.conf " फ़ाइल देखें। परिवर्तन

#Include /private/etc/apache2/users/*.conf

सेवा मेरे

Include /private/etc/apache2/users/*.conf

2) ** और अपना " /etc/apache2/httpd.conf" संपादित करें

परिवर्तन

Options FollowSymLinks Multiviews

सेवा मेरे

Options FollowSymLinks Multiviews Indexes

अंत में आपका डॉक रूट निम्नलिखित की तरह दिखेगा,

DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
Options FollowSymLinks Multiviews Indexes
MultiviewsMatch Any
AllowOverride All
Require all granted

3) अपाचे को पुनरारंभ करें

sudo apachectl restart

फिर भी आप समस्या का सामना कर रहे हैं, कृपया MacOS Sierra 10.12 में Apache सेट अप करने की जाँच करें


9

मैं आम तौर पर अपने आप को अपाचे उपयोगकर्ता को स्थानीय वातावरण में और मशीनों में सेट करके ठीक करता हूं जहां केवल वही उपयोगकर्ता जो अपाचे का उपयोग करता है वह मैं हूं। में /private/etc/apache2/httpd.conf, सेट Userसे आपके उपयोगकर्ता नाम के _www, जैसे:

User _www

->

User joao

और फिर अपाचे को पुनरारंभ करें:

$ sudo apachectl restart

अतिरिक्त कदम:

  1. यदि आपके पास सक्रिय सत्र हैं, तो वे अनुमति त्रुटियों को देने जा रहे हैं क्योंकि वे अभी भी स्वामित्व में हैं _www। उन्हें स्वयं:

    $ sudo chown joao: /var/tmp/sess_*
    

प्रभाव:

इसके बाद, Apache (और PHP et al।) आपकी तरह चलेगी और आपके द्वारा पढ़ी / लिखी गई सभी फाइलों को पढ़ने / लिखने की अनुमति प्राप्त कर लेगी। लेकिन चूंकि यह सिर्फ एक स्थानीय विकास वातावरण है, इसलिए यह समस्या नहीं होनी चाहिए जब तक कि आपके पास अपने फ़ायरवॉल में अपाचे को ब्लॉक करने के लिए कोई नियम नहीं है और फाइल एक्सप्लोरर, गोले, स्क्रिप्ट जैसी संदिग्ध फाइल को अपाचे के तहत चलाने वाली कमजोरियां हो सकती हैं; जिस स्थिति में आपके सार्वजनिक वाईफाई पड़ोसी सहित कोई भी कैफे में प्रवेश कर सकता है http://<your IP>और उन लिपियों को जो कुछ भी करना है उन्हें करने दे सकता है।

वास्तव में, आपको इसे अपने द्वारा चलाए जाने वाले स्क्रिप्ट की परवाह किए बिना रोकना चाहिए या भले ही आप Apache उपयोगकर्ता को अपने आप से सेट न करें क्योंकि आप नहीं चाहते कि यादृच्छिक बाहरी लोग आपकी सामग्री को देख सकें localhost

रोकथाम:

  1. अपाचे को केवल लोकलहोस्ट सुनें। फिर में httpd.conf:

    Listen 80
    

    ->

    Listen 127.0.0.1:80
    

    और फिर से अपाचे को फिर से शुरू करें:

    $ sudo apachectl restart
    
  2. एप्लिकेशन फ़ायरवॉल में अपाचे को अक्षम करें (ध्यान दें कि आपने पहले ही इसे निष्क्रिय कर दिया होगा यदि आपने क्लिक किया Denyहै / जब यह पहली बार अपाचे चलाने के दौरान पूछा गया था):

    1. खुला System Preferences» Security & Privacy» Firewall
    2. निचले बाईं ओर लॉक आइकन पर क्लिक करें और यदि आवश्यक हो तो अपना पासवर्ड दर्ज करें।
    3. अक्षम होने पर फ़ायरवॉल चालू करें।
    4. क्लिक करें Firewall Options
    5. +बटन पर क्लिक करें।
    6. मारो cmd ⌘+ ⇧ shift+ Gऔर दर्ज करें /usr/sbin/httpdऔर क्लिक करें Add(यदि httpdवहाँ नहीं दिखा, तो आप इसके लिए टर्मिनल में देख सकते हैं which httpd)
    7. सूची में क्लिक करें httpdऔर चुनें Block incoming connections
    8. मारो OK
    9. फ़ायरवॉल को पुनः लोड करें:

      $ launchctl unload /System/Library/LaunchAgents/com.apple.alf.useragent.plist
      $ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.alf.agent.plist
      $ launchctl load /System/Library/LaunchAgents/com.apple.alf.useragent.plist
      $ sudo launchctl load /System/Library/LaunchDaemons/com.apple.alf.agent.plist
      
  3. दस्तावेज़ रूट पर PHP को प्रतिबंधित करें। इन php.ini:

    open_basedir = /Users/joao/Sites/:/var/tmp/
    

    ( /var/tmp/सत्रों के लिए है)

अपने आप को सुरक्षित करने के लिए सभी तीन समाधानों का उपयोग करें यदि उनमें से कोई किसी कारण से अक्षम हो जाता है।

- ध्यान दें कि मेरी मशीन में मेरी सक्रिय भाषा अंग्रेजी सही नहीं है, शब्दांकन थोड़ा भिन्न हो सकता है (मेनू विकल्प और शब्दांकन विभिन्न OS X संस्करणों में भाषा की परवाह किए बिना भिन्न हो सकते हैं)।

- हटाए जाने के साथ शुरू होने वाली लाइनों $को कमांड लाइन (टर्मिनल या iTerm आदि) में दर्ज करने की आवश्यकता $है।


5

मैंने न केवल DocumentRootनिर्देशिका के लिए, बल्कि इसके सभी मूल निर्देशिकाओं के लिए भी अनुमतियाँ सेट करके अपने मुद्दे को हल किया । ऐसा मैंने किया है

(१३) अनुमति अस्वीकृत

13 त्रुटि एक फ़ाइल सिस्टम अनुमतियाँ समस्या को इंगित करता है। अर्थात्, अपाचे को गलत अनुमति के कारण किसी फ़ाइल या निर्देशिका तक पहुंच से वंचित कर दिया गया था। यह, सामान्य रूप से, अपाचे कॉन्फ़िगरेशन फ़ाइलों में एक समस्या नहीं है।

फ़ाइलों की सेवा करने के लिए, अपाचे के पास उन फ़ाइलों को एक्सेस करने के लिए ऑपरेटिंग सिस्टम द्वारा दी गई उचित अनुमति होनी चाहिए। विशेष रूप से, httpd.conf में निर्दिष्ट उपयोगकर्ता या समूह को उन सभी फाइलों को पढ़ने में सक्षम होना चाहिए जो सेवा की जाएगी और उन फाइलों की निर्देशिका को खोजेगी, साथ ही सभी मूल निर्देशिकाओं के साथ फाइलसिस्टम की जड़ तक।

Httpd.conf में निर्दिष्ट उपयोगकर्ता या समूह के स्वामित्व वाले संसाधनों के लिए एक यूनिक्स जैसी प्रणाली पर विशिष्ट अनुमतियाँ साधारण फ़ाइलों के लिए 644 -rw-r - r-- और निर्देशिकाओं या CGF स्क्रिप्ट के लिए 755 drwxr-xrx होगी। आपको ऑपरेटिंग सिस्टम पर विस्तारित अनुमतियों (जैसे SELinux अनुमतियों) की जांच करने की भी आवश्यकता हो सकती है जो उनका समर्थन करते हैं।

यदि आप 2.4 चला रहे हैं, तो एएच त्रुटि कोड आपको यहां अधिक जानकारी दे सकता है।

  • AH00132: फ़ाइल अनुमतियाँ सर्वर एक्सेस से इनकार करती हैं
  • AH00035: पहुँच से इनकार कर दिया क्योंकि खोज अनुमतियाँ पथ के एक घटक पर अनुपलब्ध हैं उदाहरण के लिए

कहते हैं कि आपको एक यूनिक्स जैसी प्रणाली पर फ़ाइल /usr/local/apache2/htdocs/foo/bar.html तक पहुँचते समय अनुमति अस्वीकृत त्रुटि प्राप्त हुई।

पहले फ़ाइल पर मौजूदा अनुमतियों की जाँच करें:

cd /usr/local/apache2/htdocs/foo
ls -l bar.htm

यदि आवश्यक हो तो उन्हें ठीक करें:

chmod 644 bar.html

फिर निर्देशिका और प्रत्येक मूल निर्देशिका (/ usr / local / apache2 / htdocs / foo, / usr / local / apache2 / htdocs, / usr / local / apache2, / usr / स्थानीय, / usr) के लिए भी यही करें:

ls -la
chmod +x .
cd ..
# repeat up to the root

कुछ सिस्टम पर, उपयोगिता नाम का उपयोग पथ के प्रत्येक घटक के साथ अनुमतियों को सूचीबद्ध करके अनुमतियों की समस्याओं को खोजने में मदद करने के लिए किया जा सकता है:

namei -m /usr/local/apache2/htdocs/foo/bar.html यदि आपके सिस्टम में namei नहीं है, तो आप parsepath का उपयोग कर सकते हैं। इसे यहाँ से प्राप्त किया जा सकता है।

यदि सभी मानक अनुमतियाँ सही हैं और आपको अभी भी अनुमति अस्वीकृत त्रुटि मिली है, तो आपको विस्तारित-अनुमतियों के लिए जाँच करनी चाहिए। उदाहरण के लिए, आप SELinux को बंद करने के लिए कमांड सेटेनफोर्स 0 का उपयोग कर सकते हैं और देख सकते हैं कि समस्या चली गई है या नहीं। यदि हां, तो उन्हें ठीक करने के लिए SELinux अनुमति और chcon देखने के लिए ls -alZ का उपयोग किया जा सकता है।

दुर्लभ मामलों में, यह अन्य समस्याओं के कारण हो सकता है, जैसे कि आपकी Apache2.conf फ़ाइल में कहीं और फ़ाइल अनुमति समस्या। उदाहरण के लिए, एक WSGIScriptAlias ​​निर्देश एक वास्तविक फ़ाइल के लिए मैपिंग नहीं। त्रुटि संदेश सटीक नहीं हो सकता है कि कौन सी फ़ाइल अपठनीय थी।

777 मोड के लिए फ़ाइलें या निर्देशिका सेट न करें, यहां तक ​​कि "बस परीक्षण करने के लिए", भले ही "यह सिर्फ एक परीक्षण सर्वर हो"। एक परीक्षण सर्वर का उद्देश्य सुरक्षित वातावरण में चीजों को सही तरीके से प्राप्त करना है, न कि इसे गलत तरीके से करना। यह सब आपको बताएगा कि क्या समस्या फाइलों के साथ है जो वास्तव में मौजूद है।

CGI स्क्रिप्ट

हालाँकि CGI स्क्रिप्ट की अनुमति सही लग सकती है, लेकिन शेबंग में निर्दिष्ट वास्तविक बाइनरी को चलाने की उचित अनुमति नहीं हो सकती है। (या इसके पथ पर कुछ निर्देशिका, ऊपर बताए अनुसार नामी के साथ जांचें)

(१३) अनुमति से वंचित: प्रॉक्सी: एचटीटीपी: १२.0.०.०.१. (० local० (लोकलहोस्ट) से जुड़ने का प्रयास विफल रहा

यह त्रुटि वास्तव में फ़ाइल अनुमतियों या उस जैसी किसी चीज़ के बारे में नहीं है। इसका वास्तव में मतलब यह है कि httpd को उस आईपी पते और पोर्ट से जुड़ने की अनुमति से वंचित कर दिया गया है।

इसका सबसे सामान्य कारण है नेटवर्क कनेक्शन बनाने के लिए SELinux httpd की अनुमति नहीं देना।

इसे हल करने के लिए, आपको एक SELinux बूलियन मान बदलने की आवश्यकता है (जो स्वतः रिबूट में बनी रहेगी)। आप प्रॉक्सी कर्मचारी को रीसेट करने के लिए httpd को पुनः आरंभ करना चाह सकते हैं, हालांकि इसकी कड़ाई की आवश्यकता नहीं है।

# setsebool -P httpd_can_network_connect 1


1
क्या आप अपने उत्तर में मूल बिंदुओं को संक्षेप में बता सकते हैं? धन्यवाद!
मैट

2
अपने सभी मूल निर्देशिका तक पहुँच प्रदान करना एक बहुत बड़ा सुरक्षा उल्लंघन होगा!
जूलियन एफ वेइनर्ट

1
यह उत्तर उपयोगी नहीं है। वैकल्पिक हल linux मशीन / विन्यास के लिए काम करता है। OSX में एक अलग निर्देशिका संरचना है, विशेष रूप से अपाचे के लिए (/ लाइब्रेरी / वेबसर्वर में स्थित) जो समाधान दिया गया है वह OSx के लिए नहीं है, जैसा कि Apple.stackexchange करता है।
जुआन

3

निम्नलिखित कदम मेरे लिए हाई सिएरा पर चल रहे अपाचे 2.4 पर काम कर रहे थे

(निम्नलिखित उत्कृष्ट ट्यूटोरियल के आधार पर: http://www.cgi101.com/book/connect/mac.html , संस्करण अंतर के लिए अतिरिक्त चरणों के साथ अद्यतन)

  1. फ़ाइल को यहां ले जाएं:

    /Library/WebServer/CGI-Executables
    
  2. सत्यापित करें कि फ़ाइल में निष्पादन की अनुमति है:

    ls -l  /Library/WebServer/CGI-Executables
    

    यदि उपयोग नहीं है:

    chmod -x  /Library/WebServer/CGI-Executables/myfile.cgi
    
  3. /Etc/apache2/httpd.conf में निम्न पंक्तियों को रद्द करें

    AddHandler cgi-script .cgi .pl
    
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
    
    LoadModule cgi_module libexec/apache2/mod_cgi.so
    
  4. निर्देशिका "/ लाइब्रेरी / वेबसर्वर / CGI-Executables" श्लोक को भी इसमें बदलें:

    <Directory "/Library/WebServer/CGI-Executables">
     AllowOverride None
     Options ExecCGI
     Require all granted
    </Directory>
    
  5. फिर अपाचे को पुनरारंभ करें:

    sudo apachectl -k restart
    

लगभग हर नए macOS संस्करण के साथ, परिवर्तन खो जाएंगे और आपको कार्य को फिर से करना होगा, और यहां तक ​​कि इसे ठीक करने के लिए अलग-अलग चरण भी करने होंगे। आपके सबसे अच्छे दोस्त / / / log / apache2 / (/ var / log / apache2 / /_log) में स्थित अपाचे लॉग हैं


1
उत्तर नहीं बल्कि अवलोकन। # 1 निर्देश ऊपर: फ़ाइल को इसमें ले जाएँ: क्या फ़ाइल है?
पाम

0

मैं मैक ओएस एक्स पर अपाचे के लिए फ़ाइल और निर्देशिका अनुमतियाँ सेट करने के निर्देशों का पालन करते हुए एसीएल की अनुमतियों को सेट करने के लिए उपयोग कर रहा था , लेकिन अभी भी हो रहा है:

[Wed Feb 12 15:43:51 2014] [error] [client ::1] (13)Permission denied: access to /trace/trace.php denied (filesystem path '/Library/WebServer/Documents/trace/trace.php') because search permissions are missing on a component of the path

तब मैंने " (13) परमिशन डेनिड " ( जोओ रामोस के जवाब में जुड़ा हुआ ) पढ़ा और एसीएल में "निष्पादित" जोड़ने की कोशिश की। वह काम किया।


0

अपने कंप्यूटर को पुनरारंभ! इसने मेरे लिए काम किया।

लेकिन सबसे पहले मैंने उपयोगकर्ता को अपाचे के तहत खुद को (_www से) बदल दिया था, क्योंकि यह एक स्थानीय / परीक्षण वातावरण है। तो अंत में यह अनुमति के साथ कुछ करना है।

फिर मशीन को पुनरारंभ करें, ठीक विंडोज की तरह;)।


0

ओपी एक समस्या पर वर्णन करता है, जबकि एक स्थानीय वेब सर्वर वातावरण को मैक पर सेट करने की कोशिश करते हुए, Apache, PHP और MySQL का उपयोग करते हुए, एक कस्टम डॉक्यूमेंटरूट के साथ, और VirtualHost (vhost) का उपयोग करने का उल्लेख शामिल है। लोकलहोस्ट को एक्सेस करते समय ओपी रिपोर्ट में 403 निषिद्ध त्रुटि हो सकती है।

Coolestguidesontheplanet के एक लेख में बताया गया है कि अपाचे में वर्चुअल होस्ट स्थापित करने का तरीका "लूजिंग लोकलहोस्ट" है। दूसरे शब्दों में, ओपी की समस्या का मूल कारण vhosts का एक अधूरा सक्षम होना हो सकता है।

"एक बार जब वर्चुअल होस्ट्स] सेट हो जाते हैं, तो आप अपने पुराने दस्तावेज़ रूट को पहले / लाइब्रेरी / वेबसर्वर / दस्तावेज़ों में खो देते हैं या http: // localhost पर ब्राउज़र में एक्सेस किया जाता है - आपको 403 निषिद्ध त्रुटि मिलती है।"

लेख यह बताता है कि स्थानीयहोस्ट को vhost वातावरण में कैसे ठीक किया जाए।

Add these lines to file /etc/apache2/extra/httpd-vhosts.conf:

   <VirtualHost *:80> 
   ServerName localhost 
   DocumentRoot /Library/WebServer/Documents/ 
   </VirtualHost>

यह यह भी बताता है कि "उपयोगकर्ता / उपयोगकर्ता के लिए उपयोग करने से संबंधित अद्यतन और प्रमाणीकरण" जैसी चीजों के साथ "अनुमतियों के मुद्दों को कैसे ठीक करें" vhosts के लिए।

Instead of using the default UID _www, use your own User and Group.

In the terminal, enter command 

    id

Find your UID and GID. 
Update file httpd.conf
In section <IfModule unixd_module>
Change User and Group to your local UID and GID.

https://coolestguidesontheplanet.com/set-virtual-hosts-apache-mac-osx-10-10-yosemite/


आपके उत्तर के लिए धन्यवाद। :) दुर्भाग्य से, इस तरह के छोटे जवाब वास्तव में कई उपयोगकर्ताओं की मदद करने के लिए पर्याप्त विवरण या संदर्भ प्रदान नहीं करते हैं। इसके बजाय, क्या आप अपने उत्तर को उस सामग्री को शामिल करने के लिए अपना जवाब संपादित कर सकते हैं जिसे आप लिंक कर रहे हैं? यह आपके उत्तर को अधिक आत्म-निहित करेगा और भविष्य में अन्य उपयोगकर्ताओं के लिए इसे संरक्षित करने में मदद करेगा।
Monomeeth

धन्यवाद, मोनोमेथ। प्रतिक्रिया की सराहना करें। उत्तर अपडेट किया गया।
BobK77
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.