วิธีอนุญาตให้ acces เชื่อมโยงสัญลักษณ์ใน ~ / Sites / สำหรับ Apache ภายใต้ Mac OS X Lion 10.7.2


12

ฉันต้องการอนุญาตให้เข้าถึงไดเรกทอรีที่เชื่อมโยง sym ภายใน ~ / Sites จาก Apache ของฉัน ฉัน Symlinked ไดเรกทอรีเช่นนี้

ln -s ~/path/to/the/source/directory/ ~/Sites/source-link-here

ตอนนี้เมื่อใดก็ตามที่ฉันได้รับคำขอ GET ฉันจะได้รับคำตอบ 403

curl http://localhost/~username/source-link-here/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /~username/source-link-here
on this server.</p>
...

ฉันจะบอก Apache ให้อนุญาต acces ไปยังไดเรกทอรี symlinked ได้อย่างไรและฉันจะบอก Apache ให้อนุญาตสิ่งนี้สำหรับการร้องขอที่เรียกใช้จาก localhost เท่านั้น

ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก

ขอแสดงความนับถืออย่างสูง

robertj

คำตอบ:


10

นี่คือบล็อกโพสต์ที่ฉันเขียนเมื่อฉันพยายามหาวิธีทำสิ่งที่คุณพยายามทำ

  1. เปิดใช้งาน Web Sharing บน MAC โดยไปที่ System Prefrences -> Sharing -> Check เลือก Enable Web Sharing
  2. แก้ไขไฟล์ username.conf ของคุณที่อยู่ใน / private / etc / apache2 / users และเพิ่มคำสั่ง“ FollowSymLinks”:

    <Directory "/ Users / yourUserName / Sites /">
        ตัวเลือกดัชนี MultiViews FollowSymLinks
        AllowOverride None
        คำสั่งอนุญาต, ปฏิเสธ
        อนุญาตจากทั้งหมด
    </ ไดเรกทอรี>
    
  3. แก้ไขไฟล์ /private/etc/apache2/httpd.conf และตรวจสอบให้แน่ใจว่าบรรทัดภายใต้“ # โฮสต์เสมือน” ไม่ได้ใส่ความคิดเห็นไว้เช่น:

    รวม /private/etc/apache2/extra/httpd-vhosts.conf
    
  4. แก้ไขไฟล์ /private/etc/apache2/extra/httpd-vhosts.conf และเพิ่ม:

    <VirtualHost *: 80>  
        <Directory /Users/yourUserName/Sites/MyWebSite.com>
            ตัวเลือก + FollowSymlinks + SymLinksIfOwnerMatch
            AllowOverride ทั้งหมด
        </ ไดเรกทอรี>
      DocumentRoot / Users / yourUserName / Sites / MyWebSite
      ชื่อเซิร์ฟเวอร์ MyWebSite.local
    </ VirtualHost>
    
  5. แก้ไขไฟล์ / etc / hosts และเพิ่มที่ด้านบน:

    127.0.0.1 MyWebSite.local
    
  6. สร้าง Symlink เพื่อลิงก์ไดเรกทอรี Code ของคุณกับหนึ่งในไดเรกทอรี Sites

    ln -s ~ / Code / MyWebSite ~ / Sites / MyWebSite
    
  7. รีสตาร์ท apache


1
ยินดีต้อนรับสู่ Super User! มันจะเป็นการดีหากรวมส่วนสำคัญของคำตอบไว้ที่นี่และให้ลิงก์สำหรับการอ้างอิงในอนาคตเท่านั้น
slhck

ฉันเปลี่ยนจากสภาพแวดล้อม xampp zend ไปเป็นค่าเริ่มต้นสำหรับการตั้งค่า mac / apache และหลังจากรีสตาร์ทก็ตายในน้ำ ขั้นตอนที่ 2 เป็นกุญแจสำคัญ ขอบคุณ!
Shanimal

2

ในความเป็นจริงเพียง 2 ขั้นตอนแรกจากคำตอบของ Emjay บวกกับการรีสตาร์ท apache เป็นสิ่งที่จำเป็นนี่คือสิ่งที่ได้ผลสำหรับฉัน:

  1. เปิดใช้งานWeb Sharingบน MAC โดยไปที่System Prefrences -> Sharing -> ตรวจสอบWeb Sharing ที่เปิดใช้งาน

  2. แก้ไขusername.confไฟล์ของคุณที่อยู่ใน/private/etc/apache2/usersและเพิ่มคำสั่งFollowSymLinks :

    <Directory "/Users/yourUserName/Sites/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
  3. ตรวจสอบการกำหนดค่า apache ของคุณ

    sudo apachectl -t

  4. รีสตาร์ท apache

    sudo apachectl รีสตาร์ท

ตอนนี้ Apache จะให้บริการลิงก์สัญลักษณ์ภายใต้Sitesไดเรกทอรีของคุณ


1

ฉันได้รับ403 forbiddenข้อผิดพลาด สิ่งที่แก้ไขปัญหาของฉันคือในhttpd-vhosts.confฉันเปลี่ยนการตั้งค่าด้านล่าง

<Location "/modulename">
  Order allow,deny
  Allow from all
</Location>

กับ

<Location "/modulename">
  Require all granted
</Location>

ทำเช่นเดียวกันกับแท็กตำแหน่งทั้งหมด มันแก้ไขปัญหาการอนุญาต


0

Options FollowSymLinks ใน httpd.conf สำหรับคอนเทนเนอร์ที่เหมาะสม

  1. ค้นหาสตริง DocumentRoot ในใจจำไว้ว่ามันคุ้มค่า ตรวจสอบเนื้อหาของ<Directory "docroot here">...</Directory>ส่วนสำหรับสตริงตัวเลือก ถ้าตัวเลือกที่หายไป - สตริงเพิ่มOptions FollowSymLinksถ้ามีอยู่ แต่ยังไม่ได้ FollowSymlinks - Options Indexes FollowSymLinksเพิ่มพารามิเตอร์นี้เพื่อให้มีการบเช่น รีสตาร์ท Apache หลังจากแก้ไขการกำหนดค่า ผลการทดสอบเขียนที่นี่

  2. อ่านเอกสาร Apache


สวัสดีขอโทษ - คำตอบนี้ไม่ช่วยเลย
robertj

คุณลองทำไหม คุณปิดใช้งาน FollowSymLinks ใน Apache config คุณต้องเปิดใช้งานในระดับไซต์หรือไดเรกทอรีเพื่อใช้ทรัพยากรที่เชื่อมโยงกัน
Lazy Badger

และตรวจสอบการอนุญาตสำหรับไฟล์ภายใน ~, การมีไฟล์ DirectoryIndex หลังจากนั้น: แก้งานตามลำดับ, ตรวจสอบความเป็นไปได้ทั้งหมด
Lazy Badger

1
อีกครั้ง - ฉันไม่สามารถทำอะไรจากความคิดเห็นของคุณ ฉันเป็นเด็กที่เกี่ยวข้องกับ Apache ทั้งหมด (นอกเหนือจาก googling ของฉันในช่วง 6 ชั่วโมงที่ผ่านมา) ฉันไม่มีเงื่อนงำว่าคอนเทนเนอร์ที่เหมาะสมคืออะไร สิ่งที่จะเป็นประโยชน์จริง ๆ คือตัวอย่างที่เป็นรูปธรรมวิธีการกำหนดค่า httpd.conf และ httpd-vhost.conf
robertj

@robertj - นี่เป็นวิธีแก้ปัญหาของคุณ คุณต้องแก้ไขไฟล์นั้นและแก้ไขตามที่ต้องการเช่น @Lazy_Badger กล่าว <Directory /usr/share/web>มันควรจะอยู่ภายใต้ โปรดทราบว่าหลังจากนั้นคุณต้องรีสตาร์ท apache โดยใช้sudo /usr/sbin/apachectl restart
Steven Lu

0

บางครั้งมันเกิดขึ้นถ้า:

  • โฟลเดอร์ต้นทางของคุณอยู่ในระบบไฟล์ NTFS
  • หากคุณใช้โฟลเดอร์ที่สร้างไว้แล้วซึ่งมีสิทธิ์แตกต่างกันไปอาจมาจากเจ้าของหรือการติดตั้งก่อนหน้า

ผมแยกออกปัญหานี้โดยการสร้างโฟลเดอร์ใหม่บนระบบไฟล์ ext4 /var/wwwและการสร้างการเชื่อมโยงสัญลักษณ์


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