シンボリックリンク 403 Forbbitten & Symbolic link not allowed or link target not accessible
シンボリックリンク設定につまづき、3日間浪費してしまいました。次同じような場面に遭遇したときのための、解決メモnoteを残します。
エラー内容
シンボリックリンクを利用して、画像ファイルを表示したかったのですが、Chromeの開発者ツールにこんなエラーが表示されていました。
403 Forbbitten
「アクセス権がありません」ってことですが、シンボリックリンク先のパーミッション等を確認しても、755になっており間違いはありませんでした。
Apacheのエラーログを確認すると...
symbolic link not allowed or link target not accessible
「シンボリックリンクの構成もパーミッションも間違いないはずなのに!」
解決策(シンボリックリンクに相対パスを使用)
原因はパーミッションエラーでした。シンボリックリンク作成時に絶対パスを使用するのではなく、相対パスを使用することで解決しました。
具体的な原因は、絶対パスを使用したシンボリックリンクと、フォルダのパーミッションでした。絶対パスを使用した方がリンクが明示され分かりやすいのですが、ルートディレクトリ等へアクセスする必要がでてきます。ルートディレクトリ等の所有権が異なる時は注意が必要です。僕の場合は、絶対パス使用時にルートディレクトリへのアクセス権はなく、ここにアクセスしようとしてエラーが発生していました。
よってシンボリックリンクの構成を、絶対パスを使用するのではなく相対パス(リンク元からの相対パス)を使用しました。これによりルートディレクトリへのアクセスを避けることで、問題を解決しました。
このnoteが自分を含め他の誰かにも役に立てば幸いです。