ドキュメントルートの外にあるファイル、つまり/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を使用しています。
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
これはロングショットですが、phpがphp.ini
ファイル内で強化されている可能性があります。 php.ini
ファイルでopen_basedir = /path/to/web/root
のようなものを探します。
open_basedir
は、すべてのPHPファイル操作をリストされたディレクトリ以下に制限します。