访问文档根目录之外的文件

访问文档根目录之外的文件

我正在尝试在文档根目录之外的文件上写入内容,即/var/www/html。我想要访问的文件是/home/user/files/folder1/info.txt,但我的 PHP 文件无法打开它(它甚至说它不存在,我用 进行了检查file_exists)。我尝试以递归方式更改文件夹的所有者/home/user/fileschown -R apache /home/user/files),并且我还将 info.txt 文件的权限设置为 777,但似乎没有任何效果。

我在 CentOS 和 Apache2 上。

答案1

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

答案2

虽然我不熟悉 selinux,所以其他发帖人的观点可能正确,但这也可能有帮助:

  • 创建从文件到/var/www/html/目录的符号链接
  • 确保该选项FollowSymLinks已打开——您可以在主程序中httpd.conf或使用.htaccess以下/var/www/html行执行此操作: Options FollowSymLinks

答案3

这是个不太可能的尝试,但您的 php 可能已在文件中得到强化php.ini。在您的php.ini文件中查找类似 的内容open_basedir = /path/to/web/root

open_basedir将所有 PHP 文件操作限制在列出的目录及以下。

相关内容