Я пытаюсь записать файл, который находится за пределами корня документа, то есть /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