web-dev-qa-db-ja.com

Mac OS X Lion 10.7.2でApache〜/ Sites /のシンボリックリンクへのアクセスを許可する方法

私のApacheから〜/ Sites内のsym-linkedディレクトリへのアクセスを許可する必要があります。私はこのようにディレクトリをシンボリックリンクしました

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に指示できますか。また、localhostから起動されたリクエストに対してのみ許可するようにApacheに指示するにはどうすればよいですか。

どんな助けでも大歓迎です。

宜しくお願いします

robertj

12
robertj

これが ブログ投稿 私があなたがしようとしていることを正確に行う方法を理解しようとしていたときに書いたものです。

  1. System Prefrences —> Sharing —> Enable Web Sharingをチェックして、MACでWeb共有を有効にします。
  2. / private/etc/Apache2/usersにあるusername.confファイルを編集し、「FollowSymLinks」ディレクティブを追加します。

    <Directory "/Users/yourUserName/Sites/">
    オプションインデックスMultiViews FollowSymLinks 
     AllowOverride None 
     Order allow、deny 
     Allow from all 
     </ Directory> 
    
  3. /private/etc/Apache2/httpd.confファイルを編集し、「#Virtual hosts」の下の行が次のようにコメント化されていないことを確認します。

    /private/etc/Apache2/extra/httpd-vhosts.conf
    を含めます
  4. /private/etc/Apache2/extra/httpd-vhosts.confファイルを編集して、以下を追加します。

    <VirtualHost *:80> 
     <Directory /Users/yourUserName/Sites/MyWebSite.com>
     Options + FollowSymlinks + SymLinksIfOwnerMatch 
     AllowOverride All 
     </ Directory> 
     DocumentRoot /Users/yourUserName/Sites/MyWebSite
     ServerName MyWebSite.local 
     </ VirtualHost> 
    
  5. / etc/hostsファイルを編集し、これを先頭に追加します。

    127.0.0.1 MyWebSite.local 
    
  6. Symlinkを作成して、CodeディレクトリをSitesディレクトリのコードディレクトリにリンクします。

    ln -s〜/ Code/MyWebSite〜/ Sites/MyWebSite 
    
  7. Apacheを再起動します

10
kelsmj

実際には、Emjayの回答からの最初の2ステップとApacheの再起動のみが必要です。

  1. System Prefrences—>Sharingに移動して、MACでWeb共有を有効にします—>チェックが有効Web共有

  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 restart

これで、ApacheはSitesディレクトリの下のシンボリックリンクを提供します。

2
espinielli

403 forbiddenエラー。私の問題を解決したのはhttpd-vhosts.conf、以下の設定を置き換えました

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

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

すべてのLocationタグについて同じでした。それは許可の問題を解決しました。

1
VINUTHA

以下の場合に発生することがあります。

  • ソースフォルダーがNTFSファイルシステム上にある
  • おそらく以前の所有者またはインストールとは異なるアクセス許可を持つ、すでに作成されているフォルダーを使用している場合。

この問題を解決するには、ext4ファイルシステムに新しいフォルダーを作成し、/var/wwwへのシンボリックリンクを作成しました。

0

適切なコンテナのhttpd.confのOptions FollowSymLinks

  1. ConfでDocumentRoot文字列を見つけます。その値を覚えておいてください。オプション文字列の<Directory "docroot here">...</Directory>セクションの内容を確認してください。オプションがない場合-文字列Options FollowSymLinksを追加します(存在するがFollowSymLinksを使用していない場合)-Options Indexes FollowSymLinksのように使用するには、このパラメーターを追加します。設定を変更した後、Apacheを再起動します。テスト結果、ここに書いてください

  2. Apacheのドキュメントを読む

0
Lazy Badger