Не удалось открыть поток на file_put_contents в PHP на CentOS 7

Я знаю, что это обычная ошибка со многими темами, но я устал от поиска, и я до сих пор не решил. Когда я пытаюсь запустить функцию file_put_contents, я получаю следующую ошибку:

Warning: file_put_contents(test.txt): failed to open stream: Permission denied in /var/www/html/nurses/adminWriter.php on line 29 

Я уже сделал наиболее общий ответ, изменил разрешения папки медсестер и файла test.txt на 777. Это не сработало.

В настоящее время я нахожусь в новой установке последнего сервера CentOS 7.

Я обнаружил, что если я запустил php-скрипт через консоль:

 # php /var/www/html/nurses/adminWriter.php 

Он работает нормально, я получаю ошибку только при запуске через браузер, но мне действительно нужно запускать ее таким образом.

С наилучшими пожеланиями!

Solutions Collecting From Web of "Не удалось открыть поток на file_put_contents в PHP на CentOS 7"

 chcon -Rv --type=httpd_sys_rw_content_t /dir 

Это может помочь, а не отключать selinux.

Хорошо, я нашел проблему: selinux

Вот решение: http://kb.sp.parallels.com/en/11142

Если страница не работает:

симптомы

После того, как вы измените каталог по умолчанию для хранения содержимого веб-сайта (например, «/ home»), вы не сможете получить доступ к содержимому субдоменов и дополнительных веб-сайтов через Интернет.

причина

Эта проблема возникает, если SELinux работает в режиме принудительного исполнения . В этом режиме каталоги webroot для сайтов и поддоменов внутри них имеют разные разрешения, и ваш веб-сервер не может получить к ним доступ. Запустите эту команду:

 # getenforce 

Результат должен быть: Принудительный

разрешение

Отключите поддержку SELinux : откройте файл / etc / selinux / config в любом редакторе и найдите следующую строку:

 SELINUX=<value> 

Измените его на:

 SELINUX=disabled 

Если вы не можете найти этот файл, откройте файл /boot/grub/grub.conf в любом редакторе и добавьте параметр selinux = 0 в загрузчик Grub:

 title SE-Linux Test System root (hd0,0) kernel /boot/vmlinuz-2.4.20-selinux-XXXXXXXXXX ro root=/dev/hda1 nousb selinux=0 #initrd /boot/initrd-2.4.20-selinux-XXXXXXXXXX.img 

Перезагрузите сервер, чтобы применить изменения. Если вы не хотите перезагружаться, запустите эту команду:

 # setenforce 0