Apache ไม่ทำงานกับโฟลเดอร์ Sites ของผู้ใช้บน macOS 10.13 High Sierra


8

ฉันได้ปฏิบัติตามคำแนะนำนี้เพื่อตั้งค่า Apache บน High Sierra: https://coolestguidesontheplanet.com/get-apache-mysql-php-and-phpmyadmin-working-on-macos-sierra/ https://coolestguidesontheplanet.com/

ฉันใช้เพื่อตั้งค่าเซียร่า

แต่เมื่อฉันไปถึงhttp://localhost/~scott/ฉันจะได้รับ "Forbidden คุณไม่ได้รับอนุญาตให้เข้าถึง / ~ scott / บนเซิร์ฟเวอร์นี้"

คำแนะนำสำหรับคำถามที่คล้ายกันนี้: localhost / userdir บน macOS High Sierraคือการโหลด vhosts ซึ่งฉันได้ลองแล้ว แต่ยังได้ "ห้าม"

มีอะไรเปลี่ยนแปลงระหว่างเซียร่ากับเซียร่าสูงซึ่งจะป้องกัน Apache จากการทำงานกับโฟลเดอร์ Sites ของผู้ใช้หรือไม่?


ลองapachectl configtestและอัปเดตผลลัพธ์
Rakesh kumar

ส่งคืนSyntax OK
sfyfedotcom

โอเคกรุณาไปที่ URL localhost / ~ ชื่อผู้ใช้ของคุณ
Rakesh kumar

"ห้ามคุณไม่ได้รับอนุญาตให้เข้าถึง / ~ สกอตต์ / บนเซิร์ฟเวอร์นี้"
sfyfedotcom

คำตอบ:


8

สิ่งนี้ใช้ได้สำหรับฉันเมื่อฉันพบปัญหาเดียวกัน

โปรดตรวจสอบไฟล์ "/private/etc/apache2/extra/httpd-userdir.conf"

เปลี่ยนแปลง

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

ถึง

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

และรีสตาร์ท apache

จาก: /programming/39631351/apache-localhost-403-forbidden-with-macos-sierra


บรรทัด/private/etc/apache2/extra/httpd-userdir.confนั้นไม่มีเครื่องหมายข้อคิดเห็นอยู่แล้วจากลิงก์คำแนะนำที่ฉันติดตาม
sfyfedotcom

คุณรีสตาร์ท apache "sudo apachectl restart"
Robert

ใช่. ฉันได้ทำการเปลี่ยนแปลงทั้งหมดกับไฟล์การกำหนดค่าของ Apache แล้ว
sfyfedotcom

4

ในการอนุญาตให้เข้าถึงไดเรกทอรี Sites คุณจะต้องเพิ่มสิ่งต่อไปนี้ลงใน/etc/apache2/httpd.conf:

<DirectoryMatch "/Users/.*/Sites">
  Require all granted
</DirectoryMatch>

การกำหนดค่า Apache เริ่มต้นถูกตั้งค่าเป็นปฏิเสธเมื่อ / ดังนั้นคุณต้องอนุญาตการเข้าถึงทุกอย่างอย่างชัดเจน


เพิ่มและรีสตาร์ท apache ไม่ได้สร้างความแตกต่างใด ๆ
sfyfedotcom

ผมมีปัญหาเดียวกัน. ได้รับ "มันใช้งานได้!" ใน locahost แต่ไม่สามารถทำให้ไดเรกทอรีผู้ใช้ทำงานได้ การแก้ไขกฎ DirectoryMatch เช่นนี้แก้ไขได้ ขอบคุณ!
Karra

4

เพียงเพื่อขยายไปยังคำตอบของ Diogo Lima

ด้วยการอัปเกรดเป็น High Sierra แอปเปิ้ลทำสำเนาการตั้งค่า apache ก่อนหน้าของคุณและผนวก ~ ก่อนหน้ากับไฟล์ * .conf ทั้งใน / etc / apache2 และโฟลเดอร์ / etc / apache2 / Extra หากคุณใช้โฮสต์เสมือนหรือโฮสต์เสมือน SSL คุณจะต้องย้ายเวอร์ชันก่อนหน้าของคุณสำหรับไฟล์. config เหล่านั้นด้วย

mv /etc/apache2/extra/httpd-vhosts.conf~previous /etc/apache2/extra/httpd-vhosts.conf
mv /etc/apache2/extra/httpd-ssl.conf~previous /etc/apache2/extra/httpd-ssl.conf

นี่เป็นการติดตั้ง High Sierra ใหม่ทั้งหมดดังนั้นฉันจึงไม่มีไฟล์การกำหนดค่าก่อนหน้านี้
sfyfedotcom

ดังนั้นเพื่อชี้แจงให้ทราบว่าคุณทำงานกับ Sierra แต่ไม่ทำการอัพเกรด แต่เป็นการติดตั้งใหม่ทั้งหมดหรือไม่ ฉันจำได้เมื่อฉันตั้งค่าให้ทำงานกับเซียร์ร่าที่ฉันสร้างลิงก์สัญลักษณ์จากโฟลเดอร์ Sites ของฉันไปยังโฟลเดอร์ / Library / WebServer / Documents และตรวจสอบให้แน่ใจว่าฉันได้รับอนุญาตด้วยตนเอง (อ่านและเขียน) เนื่องจากดูเหมือนว่าจะเป็นปัญหาสิทธิ์ในขั้นตอนนี้คุณสร้างลิงก์สัญลักษณ์และเปลี่ยนสิทธิ์หรือไม่
James Martin

ใช่ที่ถูกต้อง. ฉันติดตั้ง macOS เวอร์ชันใหม่ทุกครั้ง ฉันรู้ว่าฉันสามารถทำได้ แต่ฉันต้องการที่จะรักษาทั้งสอง/Library/WebServer/DocumentsและUsers/username/Sitesเป็นที่ตั้งแยกต่างหากสำหรับโครงการเว็บเพราะนั่นคือสิ่งที่ฉันสามารถทำได้ใน macOS ในช่วง 10 ปีที่ผ่านมา
sfyfedotcom

ดังนั้นดูเหมือนว่าคุณจะต้องเรียกใช้ Apache สองอินสแตนซ์แยกต่างหากในเครื่องเดียวกัน แต่จะไม่เอาชนะจุดประสงค์ทั้งหมดของการสร้างสมดุลของเว็บไซต์ที่ Apache เสนอให้เมื่อเรียกใช้จากอินสแตนซ์เดียวหรือไม่ คำแนะนำแนวทางปฏิบัติที่ดีที่สุดของ Apple คือไม่ต้องใช้ผู้ใช้ / ชื่อผู้ใช้ / ไซต์อีกต่อไปและใช้งานกับไลบรารี่ / เว็บเซิร์ฟเวอร์ / เอกสาร
James Martin

อินสแตนซ์ Apache เดียวคือสายเคเบิลของการอ่านโครงการเว็บจากหลายไดเรกทอรี นั่นเป็นวิธีที่ฉันตั้งขึ้นมาหลายปี
sfyfedotcom

3

หลังจากลองใช้วิธีการทั้งหมดข้างต้นหากคุณยังได้รับ "ต้องห้าม" เมื่อเข้าถึง localhost ให้ลองเพิ่ม virtualhost ใน /etc/apache2/extra/httpd-vhosts.conf ของคุณ

เพิ่ม:

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

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

https://coolestguidesontheplanet.com/set-up-virtual-hosts-in-apache-on-macos-high-sierra-10-13/

ทำงานได้ดีสำหรับฉัน


1

ฉันอยู่ในสถานการณ์เดียวกันเห็นได้ชัดว่ามีอีกไม่กี่บรรทัดที่จะไม่แสดงความคิดเห็นใน httpd.conf, vhosts ไม่เปิดใช้งานบน High Sierra - https://apple.stackexchange.com/a/299929/259065


ฉันไม่ใส่เครื่องหมายข้อคิดเห็นทั้งสองบรรทัดแล้ว ทำให้ไม่มีความแตกต่าง
sfyfedotcom

1

เพิ่งอัพเดทเมื่อเช้านี้ ใช้โฟลเดอร์ Sites ใน / Users / ชื่อผู้ใช้

สำรองและแทนที่ httpd.conf, httpd-userdir.conf และ https-vhosts.conf ด้วยตัวแปรก่อนหน้า ~

เรียกใช้sudo apachectl configtestและได้รับข้อผิดพลาด PHP (PHP อัปเดตเป็น 7 ใน High Sierra) แก้ไข http.conf เพื่อเริ่ม PHP7 และตอนนี้ทุกอย่างทำงานได้อีกครั้ง


+1 เมื่อรวมหมายเหตุsudo apachectl configtest
David C

1

แนวทางแก้ไขที่เป็นไปได้ (หลังจากล้มเหลวพร้อมกับคำแนะนำทั้งหมดข้างต้น) ปัญหานี้เกิดจากการอนุญาตของโฮมไดเร็กตอรี่ มันควรจะปฏิบัติการได้สำหรับกลุ่ม / อื่น ๆ :

sudo chmod go + x / ผู้ใช้ / ชื่อผู้ใช้

โดยแทนที่ "ชื่อผู้ใช้" ด้วยชื่อผู้ใช้จริง หลังจากนี้ก็ใช้งานได้!


0

วุ้ย!! ฉันคิดออกเอง

ทำตามขั้นตอนเหล่านี้

ขั้นตอนที่ 1: เปิดเทอร์มินัลของคุณและเรียกใช้คำสั่งนี้ด้านล่าง

sudo atom /etc/apache2/httpd.conf

และจากนั้น Uncomment สายโดยการลบที่"#"เข้าสู่ระบบก่อนที่จะ

LoadModule php7_module libexec/apache2/libphp7.so

ขั้นตอนที่ 2: เรียกใช้คำสั่งต่อไปนี้ที่กล่าวถึงด้านล่าง

cd /private/etc

sudo cp php.ini.default php.ini

ขั้นตอนที่ 3: จากนั้นไปที่/Library/WebServer/Documentsไดเรกทอรีของคุณและทำ

sudo chown -R  root yourprojectname

กลับไปที่เบราว์เซอร์ Safari แล้วพิมพ์ "http://localhost/yourprojectname"

คุณพร้อมแล้วที่จะไป

ฉันใช้ MacOS High Sierra 10.13 มันได้รับการอัพเดตเมื่อเช้าวานนี้


localhostทำงานจาก/Library/WebServer/Documentsทำงานได้ดี ปัญหาคือการทำงานจากlocalhost/~scott /Users/Scott/Sites
sfyfedotcom

0

ใช้เวลาทั้งเช้าเพื่อคิดออก แต่สุดท้ายก็ใช้งานได้ หวังว่านี่จะเป็นประโยชน์สำหรับใครบางคน

ฉันทำตามคำแนะนำ แต่มีการเปลี่ยนแปลงเล็กน้อย

  • นี่คือคำแนะนำ: https://websitebeaver.com/set-up-localhost-on-macos-high-sierra-apache-mysql-and-php-7-with-sslhttpsขอบคุณ David Marcus!)
  • นี่คือการปรับแต่งของฉันภายใต้สร้างโฟลเดอร์ส่วนเว็บไซต์ : /users/username/Sites/ฉันเพิ่มเครื่องหมายทับสุดท้ายเพื่อให้มันทำงานสำหรับฉัน

ตอนนี้ฉันสามารถเข้าถึงโฟลเดอร์ localhost ได้ แต่ ...

ก่อนที่เซียร์ราสูงมันเป็นเช่น: http://localhost/~username/smomesite.local

ตอนนี้เป็นเช่น: http://localhost/smomesite.local

ไม่~usernameต้องการอีกแล้ว


ฉันไม่ต้องการเปลี่ยนพา ธ เว็บ apache เริ่มต้นเป็นโฟลเดอร์ผู้ใช้ของฉัน ใน macOS รุ่นก่อนหน้าฉันสามารถเรียกใช้ไฟล์ / ไซต์จากทั้งUsers/myname/Sitesไดเรกทอรีและ/Library/WebServer/Documents
sfyfedotcom

0

ฉันเพิ่งมีปัญหาเดียวกันนี้และต้องการทำสิ่งที่คุณต้องการอย่างแน่นอน (เก็บรากที่ / Library / WebServer / Documents แต่ยังอนุญาตให้โฟลเดอร์ Sites ของผู้ใช้) ฉันไม่แน่ใจว่าสิ่งนี้จะเป็นประโยชน์หรือไม่ แต่หลังจากการต่อสู้ที่นี่เป็นเวลาหลายชั่วโมงคืนนี้ดูทีละบรรทัดผ่านไฟล์. config ทั้งหมดและสงสัยว่ามีอะไรผิดปกติฉันรู้ว่ากระบวนการ httpd ไม่สามารถอ่านของฉันได้ ไดเรกทอรีผู้ใช้ของตัวเอง ด้วยเหตุผลบางอย่างมันถูกตั้งค่าเป็น 750 และผู้ใช้ _www ไม่สามารถอ่านได้ เมื่อฉันแก้ไขแล้วโดยเรียกใช้ "chmod 755" ในไดเรกทอรีผู้ใช้ของฉันโฟลเดอร์ Sites ปรากฏขึ้น

ฉันไม่แน่ใจว่าไดเรกทอรีผู้ใช้ของฉันเป็นเช่นนั้นอย่างไรเนื่องจากปรากฏว่าเป็นค่าเริ่มต้นเป็น 755 เมื่อฉันสร้างผู้ใช้ใหม่ และฉันได้ทำการตรวจสอบซ้ำหลายครั้งแล้วว่าโฟลเดอร์ Sites ของฉันตั้งไว้ที่ 755


เพิ่งลองและเริ่ม Apache ใหม่ ยัง "ต้องห้าม: คุณไม่ได้รับอนุญาตให้เข้าถึง / ~ ชื่อผู้ใช้ / บนเซิร์ฟเวอร์นี้"
sfyfedotcom

0

ผมมีปัญหาเดียวกัน. ฉันไม่ใส่เครื่องหมายข้อคิดเห็นสองบรรทัดด้านล่าง (ตามที่แนะนำแล้วในการตอบกลับอื่น)

#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so 
#Include /private/etc/apache2/extra/httpd-vhosts.conf

แต่ก็ยังได้รับข้อผิดพลาดเดียวกัน เคล็ดลับสำหรับฉันคือ uncommenting บรรทัดเพิ่มเติมเหล่านี้ในไฟล์ httpd.conf:

#LoadModule userdir_module libexec/apache2/mod_userdir.so 
#LoadModule include_module libexec/apache2/mod_include.so 
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

หวังว่าจะช่วย


ฉันได้ยกเลิกข้อคิดเห็นบรรทัดเหล่านั้นแล้ว
sfyfedotcom

0

มันเกิดขึ้นว่าการอัปเดตย้ายการกำหนดค่าก่อนหน้าทั้งหมดของคุณไปยังไฟล์. conf ~ ก่อนหน้า หากคุณย้าย /etc/apache2/extra/httpd-userdir.conf ~previous ไปที่ /etc/apache2/extra/httpd-userdir.conf และ /etc/apache2/extra/httpd.conf~prepre ไปที่ / etc / apache2 / พิเศษ / httpd.conf มันควรจะทำงานเหมือนก่อน

mv /etc/apache2/extra/httpd-userdir.conf /etc/apache2/extra/httpd-userdir.conf~high-sierra
mv /etc/apache2/httpd.conf /etc/apache2/httpd.conf~high-sierra
mv /etc/apache2/extra/httpd-userdir.conf~previous /etc/apache2/extra/httpd-userdir.conf
mv /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
apachectl restart

นี่เป็นการติดตั้ง High Sierra แบบใหม่ทั้งหมดดังนั้นฉันจึงไม่มีไฟล์การกำหนดค่าก่อนหน้านี้
sfyfedotcom

0

ฉันมีปัญหาเดียวกัน ความละเอียดเป็นเรื่องง่าย ดูคำตอบที่โพสต์ได้ที่นี่: https://apple.stackexchange.com/a/306390/129503

ฉันเผชิญกับสิ่งเดียวกันหลังจากอัพเกรดเป็น High Sierra เมื่อวันนี้ ฉันพบว่าไฟล์ apache ต่อไปนี้ถูกแทนที่ด้วยเวอร์ชันใหม่ โชคดีสำหรับไฟล์เหล่านี้ทั้งหมดมีไฟล์ก่อนหน้า FILE ~ อยู่ในโฟลเดอร์เดียวกัน ฉันเพิ่งคัดลอก ~ เวอร์ชั่นก่อนหน้ากลับไปเป็นต้นฉบับเริ่มใหม่ apache และทุกอย่างเรียบร้อยดี

ในโฟลเดอร์/etc/apache2:

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

ตัวอย่าง:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf

0

แทนที่

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

จากไฟล์เก่ากว่า ~ ก่อนหน้า

คุณอาจได้รับข้อผิดพลาดโมดูล php5 ใน httpd.conf แทนที่ php5 ด้วย php7 และเว็บไซต์ของคุณควรเริ่มทำงาน

แทนที่

LoadModule php5_module libexec/apache2/libphp5.so

กับ

LoadModule php7_module libexec/apache2/libphp7.so

0

ฉันเพิ่งอัพเกรดและมีปัญหาเดียวกันทั้งหมด ฉันไม่ได้ใช้ vhosts ทางออกสำหรับฉันคือมั่นใจ:

ในhttps.confuncomment

LoadModule userdir_module libexec/apache2/mod_userdir.so

LoadModule authz_host_module libexec/apache2/mod_authz_host.so

LoadModule authz_user_module libexec/apache2/mod_authz_user.so

LoadModule authz_core_module libexec/apache2/mod_authz_core.so

และให้แน่ใจว่าextra/httpd-user.confมีสาย:

UserDir Sites
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.