ルートディレクトリの外部からパスにアクセスするには、シンボリックリンクを使用します。

ルートディレクトリの外部からパスにアクセスするには、シンボリックリンクを使用します。

Apache設定に外部パスを追加する必要があります。 (httpd)

そのため、httpdルートフォルダにこのパスへのシンボリックリンクを作成しました。パスは/var/log/httpd/です(私のプロジェクトにログを直接表示したい)。

次のように入力して、ブラウザを介してすべてのパスにアクセスできます。http://127.0.0.1/httpd/

ただし、PHPファイルからそのファイルにアクセスしようとすると、PHPでエラーが発生します。

パスワード:

function logInfo() {

$log_path = $_SERVER['DOCUMENT_ROOT'] . "/httpd/local.cmp-error_log";
$php_log = file_get_contents($log_path);

print_r ($php_log);

}

間違い:

[Sun Jul 17 23:45:19.960292 2016] [:error] [pid 19451] [client 127.0.0.1:34718] PHP Warning:  file_get_contents(/home/txx/http/www/httpd/local.cmp-error_log): failed to open stream: Operation not permitted in /home/txx/http/www/base_home/config/sys.php on line 8

ここでエラーはどこにありますか?

ベストアンサー1

基本的なアイデアは、ドキュメントのルート外のファイルにアクセスできないことです。これがドキュメントルートのポイントです。 Apacheがルートディレクトリの外側のシンボリックリンクを追跡するのを防ぐために、いくつかの保護装置があります。あなたはする必要があります〜できるようにするFollowSymlinksリンクを含むディレクトリにあるがファイルを参照できる場合は、これは完了です。

また、PHPがドキュメントルートに制限されていないことを確認する必要があります。バラよりこのスタックオーバーフローの質問:小切手にはphp.iniこの設定は含まれていませんopen_basedir。もう一つの潜在的な制限はSELinuxです。システムが強化されると、PHPは事前定義された特定のディレクトリに制限される可能性があります。特に、ホームディレクトリへのアクセスが禁止されることがあります。また、見ることができますドキュメントルート外のファイルにアクセスする

Webルート以外のコンテンツにアクセスできない場合や、システムのセキュリティをあまり弱くしたくない場合は、ApacheとPHPに別の場所を見つけることなく、Webルートにファイルを配置できます。 ㅏバインドマウントマウントされたディレクトリのビューを/var/log/httpd作成します。/var/www/dangerous/logsこのビューを読み取り専用にすることができ、おそらくそうする必要があります。/var/log/httpd/var/www/dangerous/logs

おすすめ記事