Назад | Перейти на главную страницу

Доступ к файлу вне корня документа

Я пытаюсь записать файл, который находится за пределами корня документа, то есть /var/www/html. Файл, к которому я хочу получить доступ, это /home/user/files/folder1/info.txt, но мой файл PHP не может его открыть (там даже написано, что его не существует, я проверил его с помощью file_exists). Я пробовал нарезать папку /home/user/files рекурсивно (chown -R apache /home/user/files), и я также установил разрешения на 777 для файла info.txt, но ничего не работает.

Я использую 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

Это долгий путь, но ваш php мог быть усилен в пределах php.ini файл. Посмотри в свой php.ini файл для чего-то вроде open_basedir = /path/to/web/root.

open_basedir ограничивает все операции с файлами PHP указанным каталогом и ниже.

Хотя я не знаком с selinux, поэтому другой плакат может быть на правильном пути, но это тоже может помочь:

  • Создайте символическую ссылку из файла на /var/www/html/ каталог
  • Убедитесь, что опция FollowSymLinks включен - вы можете сделать это в основном httpd.conf или в .htaccess в /var/www/html с этой строкой: Options FollowSymLinks