apache — не удалось открыть поток для 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

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

С уважением!

5

Решение

chcon -Rv --type=httpd_sys_rw_content_t /dir

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

15

Другие решения

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

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

В случае, если страница закрывается:

симптомы

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

причина

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

# getenforce

Выход должен быть: Обеспечение

разрешение

запрещать SELinux поддержка: открыть файл / И т.д. / SELinux / конфигурации в любом редакторе и найдите эту строку:

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
6