Я знаю, что это обычная ошибка со многими темами, но я устал от поиска, и я до сих пор не решил. Когда я пытаюсь запустить функцию 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
Он работает нормально, я получаю ошибку только при запуске через браузер, но мне действительно нужно запускать ее таким образом.
С наилучшими пожеланиями!
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