web-dev-qa-db-ja.com

ドキュメントルート外のファイルにアクセスする

ドキュメントルートの外にあるファイル、つまり/var/www/htmlに書き込もうとしています。アクセスしたいファイルは/home/user/files/folder1/info.txtですが、PHPファイルで開くことができません(存在しないと表示されているので、file_existsで確認しました)。chownしようとしました。フォルダー/home/user/filesを再帰的に(chown -R Apache /home/user/files)、info.txtファイルでアクセス許可を777に設定しましたが、何も機能していないようです。

私はCentOSとApache2を使用しています。

2
Ivan

httpd_selinux(8)のマニュアルページから:

   SELinux policy for httpd can be setup to not allowed  to  access  users
   home  directories.   If you want to allow access to users home directo-
   ries you need to set the httpd_enable_homedirs boolean and  change  the
   context of the files that you want people to access off the home dir.

   setsebool -P httpd_enable_homedirs 1
   chcon -R -t httpd_sys_content_t ~user/public_html

私はselinuxに精通していないので、他のポスターは正しい方向に進んでいる可能性がありますが、これも役立つ可能性があります。

  • ファイルから/var/www/html/ディレクトリへのシンボリックリンクを作成します
  • オプションFollowSymLinksがオンになっていることを確認します。これはメインのhttpd.confまたは.htaccess/var/www/htmlで次の行を使用して実行できます:Options FollowSymLinks
0
laebshade

これはロングショットですが、phpがphp.iniファイル内で強化されている可能性があります。 php.iniファイルでopen_basedir = /path/to/web/rootのようなものを探します。

open_basedirは、すべてのPHPファイル操作をリストされたディレクトリ以下に制限します。

0
Chris Ting