apache client ถูกปฏิเสธโดยการกำหนดค่าเซิร์ฟเวอร์หลังจาก mac OS X อัปเกรดเป็น Yosemite


12

ฉันรู้ว่าสิ่งนี้มีลักษณะคล้ายกับคำถามอื่น ๆ แต่ดูเหมือนว่าโยเซมิตีจะเปลี่ยนบางสิ่งด้วยการตั้งค่า Apache ด้วยการอัพเกรด บันทึกข้อผิดพลาดของฉันบอกว่า "ไคลเอนต์ถูกปฏิเสธโดยการกำหนดค่าเซิร์ฟเวอร์: /Users/douglas/Sites/testpatient.php"

รุ่น Apache: MacBook-Pro: apache2 douglas $ apachectl -v รุ่นเซิร์ฟเวอร์: Apache / 2.4.9 (Unix) เซิร์ฟเวอร์ที่สร้าง: กันยายน 9 2014 14:48:20 ไฟล์ douglas.conf ของฉันคือ 644 root / wheel และต่อไปนี้:

<Directory "/Users/douglas/Sites">
   Options Indexes Multiviews
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

http.conf ของฉันมีดังต่อไปนี้:

# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www

</IfModule>

...

DocumentRoot "/Library/WebServer/Documents"

#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Satisfy All
</Directory>

...

<Directory "/Library/WebServer/Documents">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks MultiViews

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
#AllowOverride None
AllowOverride All
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
Satisfy All
</Directory>

ทุกสิ่งจะได้รับการชื่นชม ฉันลองย้อนกลับไปยังไฟล์ http.conf ก่อนหน้านี้ แต่มีความแตกต่างกันมากพอ ๆ กับโมดูลที่ต้องโหลด เป็นไปได้ทั้งหมดที่ฉันพลาดโมดูล แต่ไม่มีการร้องเรียนในบันทึก


ในขณะที่chrisMcคำตอบก็คือจุดที่ stumblers ในอนาคตนอกจากนี้ยังอาจต้องการที่จะอ่านการติดตั้ง Apache, PHP, MySQL และบน Mac OS X โยเซมิตี
Jason McCreary

คำตอบ:


17

ใน user .conf (douglas.conf) ให้แทนที่:

Order allow,deny
Allow from all

ด้วย:

Require all granted

ความแตกต่างคือวิธีที่ apache 2.4 จัดการสิทธิ์

http://httpd.apache.org/docs/2.4/upgrading.html


ฉันเปลี่ยนการตั้งค่าใน httpd.conf และ douglas.conf แต่ฉันยังคงได้รับข้อผิดพลาดเดิม
new2code

1
อย่าลืมรีสตาร์ท Apache
Thomas Edwards

นี่คือสิ่งที่ดีแม้ว่าการสั่งซื้อ / อนุญาต / ปฏิเสธเก่ายังคงทำงานอยู่หากคุณaccess_compatเปิดโมดูล ฉันคิดว่าคงจะดีกว่าที่ฉันจะได้รับข้อผิดพลาดและแก้ไขการตั้งค่าของฉันแทนที่จะปล่อยให้มันทำงานได้นานขึ้นด้วยการตั้งค่าแบบเก่า
Alexis Wilke

11

ฉันมีปัญหาเดียวกันเช่นกันและแก้ไขได้โดยทำดังนี้

  1. โหลดโมดูล userdir โดยค้นหาบรรทัดต่อไปนี้ในhttpd.confและไม่ใส่หมายเหตุ: LoadModule userdir_module libexec/apache2/mod_userdir.so Include /private/etc/apache2/extra/httpd-userdir.conf

  2. แก้ไขพิเศษ / httpd-userdir.confค้นหาและไม่แสดงข้อคิดเห็นบรรทัดต่อไปนี้: Include /private/etc/apache2/users/*.conf

  3. แก้ไขผู้ใช้ / *. confเพิ่มRequire localและเพิ่มตัวอักษร+(หรือ-) หน้าตัวเลือกทั้งหมดในบรรทัดตัวเลือกเช่น: <Directory "/Users/user/Sites/"> Options +Indexes +MultiViews +FollowSymLinks +SymLinksIfOwnerMatch +ExecCGI AllowOverride All Require local Order allow,deny Allow from all </Directory>


1
สิ่งนี้ (ตรงนี้ไม่มีอะไรมากไม่น้อยไปกว่า) ทำงานให้ฉันเมื่อไม่มีอะไรทำ ขอบคุณ!
orome

1

ฉันมีประสบการณ์แบบเดียวกัน แต่กับ Mavericks หลังจากใช้การอัปเดตความปลอดภัยจากสองสามวันที่ผ่านมา Mavericks ยังคงใช้ Apache 2.2 อยู่ดังนั้นจึงไม่ใช่ปัญหาการตั้งค่า chrisMc ที่กล่าวถึงแม้ว่ามันจะดูเหมือนว่าเขาพูดถูกและคุณจะต้องเปลี่ยนสิ่งนั้นด้วย

ในกรณีของฉันฉันแรกแก้ไขปัญหาหลักโดยการแสดงความคิดเห็นบรรทัดโมดูล Homebrew PHP 5.4 ที่ฉันเพิ่มก่อนหน้านี้ ในhttpd.conf:

#LoadModule php5_module /usr/local/opt/php54/libexec/apache2/libphp5.so

และแทนที่จะเลือกโมดูล PHP เริ่มต้นซึ่งฉันได้แสดงความคิดเห็นก่อนหน้านี้:

LoadModule php5_module libexec/apache2/libphp5.so

แก้ไขแล้ว แต่สำหรับรุ่นHomebrewทำไมฉันจึงคิดว่าบางทีไลบรารีระบบที่รวบรวมไว้นั้นได้รับการอัปเดตในการอัปเดตความปลอดภัย เมื่อฉันวิ่งphp -vฉันได้รับคำเตือนเกี่ยวกับicu4cห้องสมุดที่ไม่ได้โหลด

ดังนั้นฉันเพิ่งคอมไพล์ PHP ใหม่และทำงานได้อีกครั้ง ในกรณีของฉันฉันเพิ่งทำ

brew uninstall php54
brew install php54

จากนั้นโมดูล Homebrew สามารถเปิดใช้งานได้อีกครั้ง


1

เนื่องจากฉันไม่เคยใช้ homebrew มาก่อนฉันจึงสิ้นสุดการติดตามคำแนะนำนี้ การตั้งค่าสำหรับการพัฒนาส่วนบุคคล

ฉันเห็นว่าสิทธิ์ที่ผู้โพสต์คนแรกพูดถึงเป็นส่วนหนึ่งของปัญหา แต่ฉันยังคงมีปัญหาการอนุญาตด้วยการตั้งค่าส่วนบุคคลโดยใช้ไฟล์ user.conf การตั้งค่านี้ใช้โฮสต์เสมือน ฉันไม่รู้ว่า homebrew ทำอะไรเพื่อแก้ไขปัญหา ฉันเดาว่าฉันจะเรียกมันว่าเป็นวิธีแก้ปัญหาเพราะมันไม่ได้แก้ไขปัญหาดั้งเดิมของฉันซึ่งฉันไม่สามารถเข้าถึงสิ่งใด ๆ บนเว็บเซิร์ฟเวอร์โดยใช้ไฟล์ user.conf


! น่ากลัว กุญแจสำคัญสำหรับฉันคือเพียงแค่แสดงความคิดเห็นบรรทัดที่ 220-221 ( # AllowOverride noneและ# Require all denied) ซึ่งเพิ่มเข้ามาใหม่ในโยเซมิตี
MarkHu

0

ในความคิดเห็นhttpd.conf:

LoadModule authz_core_module libexec/apache2/mod_authz_core.so 
LoadModule authz_host_module libexec/apache2/mod_authz_host.so 
LoadModule userdir_module libexec/apache2/mod_userdir.so 
Include /private/etc/apache2/extra/httpd-userdir.conf

และในความคิดเห็น/etc/apache2/extra/httpd-userdir.conf:

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

จากนั้นรีสตาร์ท Apache


0

คำตอบข้างต้นใช้งานได้กับการติดตั้งสต็อค หากไม่ได้มีบางสิ่งที่อาจช่วยได้:

  1. บนระบบไฟล์ของคุณโฟลเดอร์จะต้องเป็นไซต์ที่มีตัวพิมพ์ใหญ่ S (ชื่อโฟลเดอร์คือฮาร์ดโค้ดในโมดูล userdir ไม่สามารถแตกต่างกันได้) ต้องได้รับอนุญาต:

    drwxr-xr-x   2 username staff    68 29 mar 11:26 Sites
    
  2. การ<Directory…>กำหนดค่าถูกนำไปใช้ด้านบนของมันดังนั้นจึงจำเป็นต้องตรงกับชื่อโฟลเดอร์รวมถึงกรณี (เรามาจาก Linux ... )

    สิทธิ์ของ/etc/apache2/users/username.confไฟล์:

    -rw-r--r--  1 root  wheel  189 29 mar 11:42 username.conf
    

ดังนั้นตรวจสอบให้แน่ใจว่าบรรทัดนั้น<Directory "/Users/user/Sites/">อ้างอิงถึงโฟลเดอร์ที่ถูกต้องด้วยชื่อผู้ใช้ที่ถูกต้อง (โดยผู้ใช้ตรงกับชื่อของไฟล์การกำหนดค่า) รวมกรณีและSitesโฟลเดอร์มีอยู่ตามที่เป็นกรณีรวม


0

ในกรณีของฉัน apache รุ่น 2.4.27

แก้ไขปัญหาหลังจากเปลี่ยนไฟล์httpd-vhosts.confของฉันจากไดเรกทอรี " /etc/apache2/extra/httpd-vhosts.conf "

จาก

<VirtualHost *:80>
    ServerName inventory.loc
    ServerAlias www.inventory.loc
    DocumentRoot "/Users/Vagabond/Sites/inventory/public/"
    ErrorLog "/Users/Vagabond/Sites/logs/inventory.loc-error_log"
    CustomLog "/Users/Vagabond/Sites/logs/inventory.loc-access_log"
</VirtualHost>

ถึง,

<VirtualHost *:80>
    ServerName inventory.loc
    ServerAlias www.inventory.loc
    DocumentRoot "/Users/Vagabond/Sites/inventory/public/"
    <Directory /Users/Vagabond/Sites/inventory/public/>
        Require all granted
        Options Includes FollowSymLinks
    </Directory>
    ErrorLog "/Users/Vagabond/Sites/logs/inventory.loc-error_log"
    CustomLog "/Users/Vagabond/Sites/logs/inventory.loc-access_log"
</VirtualHost>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.