2016-07-21 10 views
0

私はApacheとPHPを使用しています。パーミッション拒否された警告を:ウェブルートディレクトリには、私は、ストリームをオープンに失敗しましたしまった/home/name/abc.phpPHPはwebrootの外部からのファイルを含む

include_one "/home/name/abc.php"; 

からファイルを含めたい/home/name/public_html

です。

私はウェブルート/home/name/public_html/abc.php

内部の同じファイルを移動した場合はエラーはありません。

Apacheのユーザーとグループが、私は同様の構成を持つ別のサーバーを持っている

/home/name/abc.phpファイルにアクセスする権限を持っている、それが働いています。考えられる理由を知りたいだけです。

私はLinuxのコンソールで直接PHPスクリプトを実行しようとしましたが、許可の問題はありません。私は問題がApacheの設定にあると思います。

+0

これは問題ではありません、それはセキュリティ機能です。ファイルがwebrootディレクトリの外にある必要があるのはなぜですか? –

+1

phpはファイルシステム内のどこにいても、REACHとREADの権利を持っているファイルを読むことができます。ファイル自体に読み取り権限があっても、そのディレクトリにアクセスする必要があります。 –

+1

@cale_b:すべてが最初にウェブルートの内側にあるべきではないからです。定義上、Webroot内のものはすべて世界で利用可能です。 1つの設定エラーやサーバの不具合があり、そのコードに格納されているバックエンドクレデンシャルを含め、未処理のPHPコードを提供することになります。 –

答えて

0

私はこの問題を解決する方法をhereから見つけました。私はSELinuxをCentOS 7 Virtual Serverで実行しています。

私が使用してホームディレクトリ/から読み込むためのhttpd権限を付与する必要があります。

sudo setsebool httpd_read_user_content=1 
0

あなたは、phpが実際にApacheユーザーとして実行されていることを確認する必要があります。あなたの設定に応じて、phpが別のユーザーのもとで実行されている可能性があります。あなたのApacheがphp-fpmを使用するように設定されている場合。ファイルにこの

<?php 
echo "<pre>"; 
var_dump(posix_getpwuid()); 

を入れて、あなたのユーザー情報を表示する必要があり、Webブラウザ経由でアクセスする

サーバはLinuxシステムの場合は、。

関連する問題