Cách cho phép truy cập vào một liên kết tượng trưng trong ~ / Trang web / cho Apache trong Mac OS X Lion 10.7.2


12

Tôi cần cho phép truy cập vào thư mục được liên kết sym trong ~ / Trang web từ Apache của tôi. Tôi đã liên kết các thư mục như thế này

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

Bây giờ bất cứ khi nào tôi kích hoạt yêu cầu NHẬN, tôi nhận được phản hồi 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>
...

Làm cách nào tôi có thể yêu cầu Apache cho phép truy cập vào thư mục symlinked và làm cách nào để tôi bảo Apache chỉ cho phép các yêu cầu này được kích hoạt từ localhost.

Bất kỳ trợ giúp nào cũng được đánh giá rất cao.

Trân trọng

robertj

Câu trả lời:


10

Đây là một bài đăng blog tôi đã viết khi tôi đang cố gắng tìm ra cách để làm chính xác những gì bạn đang cố gắng làm.

  1. Kích hoạt tính năng chia sẻ web trên MAC bằng cách đi tới System Prefrences -> Sharing -> Kiểm tra Kích hoạt tính năng chia sẻ web
  2. Chỉnh sửa tập tin username.conf của bạn nằm trong / private / etc / apache2 / users và thêm chỉ thị của Follow FollowSymLinks.

    <Thư mục "/ Người dùng / yourUserName / Trang web /">
        Tùy chọn Chỉ mục MultiViews FollowSymLinks
        AllowOverride Không
        Cho phép đặt hàng, từ chối
        Cho phép từ tất cả
    </ Thư mục>
    
  3. Chỉnh sửa tập tin /private/etc/apache2/httpd.conf và đảm bảo rằng dòng bên dưới # # Máy chủ ảo không được nhận xét, như vậy:

    Bao gồm /private/etc/apache2/extra/httpd-vhosts.conf
    
  4. Chỉnh sửa tệp /private/etc/apache2/extra/httpd-vhosts.conf và thêm:

    <Virtualhost *: 80>  
        <Thư mục /Users/yourUserName/Sites/MyWebSite.com>
            Tùy chọn + FollowSymlinks + SymLinks IfOwnerMatch
            Cho phép tất cả
        </ Thư mục>
      DocumentRoot / Users / yourUserName / Pages / MyWebSite
      Tên máy chủ MyWebSite.local
    </ Virtualhost>
    
  5. Chỉnh sửa tập tin / etc / hosts và thêm phần này ở trên cùng:

    127.0.0.1 MyWebSite.local
    
  6. Tạo một Symlink để liên kết thư mục Code của bạn với một trong thư mục Trang web.

    ln -s ~ / Code / MyWebSite ~ / Trang web / MyWebSite
    
  7. Khởi động lại apache


1
Chào mừng bạn đến với Siêu người dùng! Sẽ rất tốt nếu bao gồm các phần thiết yếu của câu trả lời ở đây và chỉ cung cấp liên kết để tham khảo trong tương lai.
slhck

Tôi đã chuyển từ môi trường xampp zend sang thiết lập mac / apache mặc định và sau khi khởi động lại đã chết trong nước. Bước 2 là chìa khóa. Cảm ơn bạn!
Tối

2

Trên thực tế, chỉ có 2 bước đầu tiên từ câu trả lời của Emjay cộng với khởi động lại apache là cần thiết, đây là những gì làm việc cho tôi:

  1. Bật chia sẻ web trên MAC bằng cách đi tới Hệ thống khung -> Chia sẻ -> Kiểm tra chia sẻ web được bật

  2. Chỉnh sửa username.conftệp của bạn nằm trong /private/etc/apache2/usersvà thêm chỉ thị FollowSymLinks :

    <Directory "/Users/yourUserName/Sites/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
  3. kiểm tra cấu hình apache của bạn

    sudo apachectl -t

  4. khởi động lại apache

    sudo apachectl khởi động lại

Bây giờ Apache sẽ phục vụ các liên kết tượng trưng trong Sitesthư mục của bạn .


1

Tôi đã nhận được 403 forbiddenlỗi. Vấn đề của tôi là gì httpd-vhosts.conf, tôi đã thay thế cấu hình bên dưới

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

với

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

Đã làm tương tự cho tất cả các thẻ Vị trí. Nó giải quyết vấn đề cho phép.


0

Options FollowSymLinks trong httpd.conf cho container thích hợp

  1. Tìm chuỗi DocumentRoot trong conf, hãy nhớ giá trị của nó. Kiểm tra nội dung của <Directory "docroot here">...</Directory>phần cho chuỗi Tùy chọn. Nếu Tùy chọn bị thiếu - thêm chuỗi Options FollowSymLinks, nếu tồn tại nhưng không có FollowSymLinks - hãy thêm tham số này để có smth like Options Indexes FollowSymLinks. Khởi động lại Apache sau khi sửa đổi cấu hình. Kết quả kiểm tra, viết nó ở đây

  2. Đọc tài liệu Apache


Xin chào, xin lỗi - Câu trả lời này không giúp ích gì cả.
robertj

Bạn đã thử làm điều đó? bạn đã tắt FollowSymLinks trong cấu hình Apache, bạn phải bật ở cấp độ trang web hoặc thư mục để sử dụng các tài nguyên được liên kết với nhau
Lazy Badger

và kiểm tra quyền cho các tệp bên trong ~, sự hiện diện của tệp Directory Index sau đó: giải quyết tuần tự nhiệm vụ, kiểm tra tất cả các khả năng
Lazy Badger

1
một lần nữa - tôi không thể đưa ra bất cứ điều gì từ ý kiến ​​của bạn. Tôi là một người hoàn toàn mới liên quan đến Apache (ngoài việc tôi làm việc trong 6 giờ qua) Tôi chỉ đơn giản là không biết container nào thích hợp . Điều sẽ thực sự hữu ích là một ví dụ cụ thể về cách định cấu hình httpd.conf và httpd-vhost.conf.
robertj

@robertj - Đây là giải pháp cho vấn đề của bạn. Bạn cần chỉnh sửa tệp đó và sửa đổi nó cho phù hợp như @Lazy_Badger đã nói. Nó nên được đặt dưới <Directory /usr/share/web>. Lưu ý rằng sau đó, bạn cần khởi động lại apache bằng cách sử dụngsudo /usr/sbin/apachectl restart
Steven Lu

0

Đôi khi nó xảy ra nếu:

  • Thư mục nguồn của bạn nằm trên hệ thống tệp NTFS
  • Nếu bạn đang sử dụng một thư mục đã được tạo, có các quyền khác nhau, có thể là từ chủ sở hữu hoặc cài đặt trước đó.

Tôi đã sắp xếp vấn đề này bằng cách tạo một thư mục mới trên hệ thống tệp ext4 và tạo một liên kết tượng trưng đến /var/www.


Làm thế nào điều này có liên quan đến OP bằng OSX?
JoshP
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.