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


12

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に指示するにはどうすればよいですか?

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

宜しくお願いします

ロベルティ

回答:


10

これはあなたがやろうとしていることを正確に行う方法を見つけようとしていたときに書いたブログ投稿です。

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

    <ディレクトリ "/ Users / yourUserName / Sites /">
        オプションインデックスMultiViews FollowSymLinks
        AllowOverrideなし
        注文許可、拒否
        すべてから許可
    </ 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>  
        <ディレクトリ/Users/yourUserName/Sites/MyWebSite.com>
            オプション+ FollowSymlinks + SymLinksIfOwnerMatch
            すべてを許可
        </ Directory>
      DocumentRoot / Users / yourUserName / Sites / MyWebSite
      ServerName MyWebSite.local
    </ VirtualHost>
    
  5. / etc / hostsファイルを編集し、これを上部に追加します。

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

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


1
スーパーユーザーへようこそ!ここに答えの重要な部分を含めて、今後の参照用にのみリンクを提供するのがいいでしょう
slhck

xampp zend環境からデフォルトのmac / apacheセットアップに移行しましたが、再起動後は死にました。ステップ2が重要でした。ありがとうございました!
シャニマル

2

実際、Emjayの答えから最初の2ステップとapacheの再起動だけが必要です。これが私にとってうまくいったことです。

  1. 有効Web共有をするつもりでMACにシステムPrefrences - > 共有 - >チェックが有効にWeb共有を

  2. にあるusername.confファイルを編集し/private/etc/apache2/usersFollowSymLinksディレクティブを追加します

    <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ディレクトリの下にシンボリックリンクを提供します。


1

403 forbiddenエラーが発生していました。私の問題を解決したのはhttpd-vhosts.conf、次の設定を置き換えました

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

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

すべてのLocationタグで同じことをしました。許可の問題を解決しました。


0

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

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

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


こんにちは、ごめんなさい-この答えはまったく役に立ちません。
-robertj

あなたがしようとしたDID 行うことを?もしあなたがシンボリックリンクのリソースを使用するために、サイトまたはディレクトリレベルで有効にするために必要Apacheの設定では無効になっFollowSymLinksを、
レイジーアナグマ

〜内のファイルのアクセス許可を確認し、その後にDirectoryIndexファイルが存在します。タスクを順番に解決し、すべての可能性を確認します
レイジーバジャー

1
再び-あなたのコメントから何かを作ることはできません。私は、Apacheに関する完全な初心者です(過去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


これは、OSXを使用するOPにどのように関連しますか?
JoshP
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.