php fopen не удалось открыть поток: отказано в разрешении - PullRequest
3 голосов
/ 15 ноября 2011

У меня проблемы с записью в текстовый файл с использованием php. Это может показаться простым, но я установил для владельца файла и группы apache / root, разрешение 777, и я все еще не могу записать в файл. Я использую Centos с php 5.3.8.

====================
New info
====================

semanage fcontext -l | grep httpd | grep rw
/var/lib/drupal(/.*)?                              all files          system_u:object_r:httpd_sys_script_rw_t:s0 
/var/spool/gosa(/.*)?                              all files          system_u:object_r:httpd_sys_script_rw_t:s0 
/var/lib/bugzilla(/.*)?                            all files          system_u:object_r:httpd_bugzilla_script_rw_t:s0 
/var/spool/viewvc(/.*)?                            all files          system_u:object_r:httpd_sys_script_rw_t:s0 

Ответы [ 2 ]

6 голосов
/ 21 ноября 2011

Чтобы позволить каталогу быть r / w, я использовал команду chcon, чтобы добавить тип httpd_sys_script_rw_t в каталог и все, что в нем:

chcon -R -t httpd_sys_script_rw_t <directory>

Флаг -R делает команду рекурсивной.

Флаг -t устанавливает расширенный атрибут файла в указанный контекст файла. В этом случае контекст файла httpd httpd_sys_script_rw_t, который используется, когда:

Вы хотите, чтобы сценарии httpd_sys_script_exec_t считывали / записывали данные и запрещали доступ другим сценариям, отличным от sys.

0 голосов
/ 15 ноября 2011

Соответствующие контексты файлов, которые следует использовать для разрешения HTTPd записывать на диск (а также логические значения для других операций), описаны на справочной странице httpd_selinux(8).

...