![Разрешения PHP-сервера для файлов и каталогов предоставлены, но все еще не разрешены](https://rvso.com/image/1447624/%D0%A0%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F%20PHP-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0%20%D0%B4%D0%BB%D1%8F%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%20%D0%B8%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2%20%D0%BF%D1%80%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D1%8B%2C%20%D0%BD%D0%BE%20%D0%B2%D1%81%D0%B5%20%D0%B5%D1%89%D0%B5%20%D0%BD%D0%B5%20%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D1%8B.png)
У меня есть PHP-код на Codeanywhere, где я просто пытаюсь создать файл на сервере, но получаю следующую ошибку:
«Предупреждение: fopen(file.txt): не удалось открыть поток: Отказано в доступе в /home/cabox/workspace/index.php в строке 312»
Я использую fopen ($file, 'w'). С 'r' в качестве параметра, это работает.
Я спросил CodeAnywhere, существуют ли какие-либо ограничения, которые не позволяют пользователям создавать файлы с помощью кода непосредственно на сервере, но мне ответили, что никаких ограничений нет, и нужно только узнать, как предоставить разрешения.
Впервые использован chmod для файлов и каталогов
chmod 755 index.php (впоследствии 777 для экспериментальных целей)
Но я все еще сталкиваюсь с сообщением об ошибке, показанным выше. Поэтому я покопался в разрешениях на каждом уровне сервера и отобразил их ниже, но я не вижу ничего странного (согласно моим скудным знаниям)
/
[cabox@box-codeanywhere /]$ ls -ld
drwxr-xr-x 21 root root 4096 19 апр. 03:09
/дом/
[cabox@box-codeanywhere home]$ ls -ld
drwxr-xr-x 3 root root 4096 16 июня 2014 г.
/домой/кабокс/
[cabox@box-codeanywhere ~]$ ls -ld
drwxrwxrwx 7 cabox cabox 4096 14 апр 11:48
/home/cabox/workspace/
[cabox@box-codeanywhere рабочее пространство]$ ls -ld
drwxrwxrwx 4 cabox cabox 4096 19 апр. 04:27
Я не могу изменить разрешения для/как имя пользователякорень Я полагаю, это потому, что мое имя пользователякабокс
[рабочее пространство cabox@box-codeanywhere]$ id
uid=500(cabox) gid=500(cabox) groups=500(cabox)
index.php пытается создать file.txt находится в/home/cabox/workspace/
-rwxrwxrwx 1 cabox cabox 18608 19 апр. 05:12 index.php
Что я делаю не так?
Заранее спасибо!
решение1
После долгих экспериментов я обнаружил, что настроил среду разработки виртуальной машины как Html5, а не php. Файлы PHP работали правильно, так как сервером был Apache, но по какой-то причине, которая до сих пор ускользает от меня, управление разрешениями отличается.
После переключения среды на PHP команды, которые раньше не работали, заработали, и мне наконец удалось выяснить, в чем проблема.
Вот «решение», к которому следует отнестись с долей скепсиса, поскольку мои познания в этом вопросе весьма ограничены.
Предоставление собственному пользователю (cabox) права 775 ничего не дает, поскольку только пользователь «www-data» имеет право создавать, изменять и удалять файлы на сервере во время работы веб-сайта.
sudo chown -R www-data:www-data /home/cabox/workspace chmod 775 /home/cabox/workspace
это сработало.
Теперь, на codeanywhere, если я изменю имя пользователя на 'www-data', я потеряю возможность работать на сервере, создавать, изменять, удалять файлы. Я думал, что решение в том, чтобы установить права как пользователь (cabox) и группа (www-data) и дать им те же права, но пока это не сработало, так что все еще нужно разобраться с этим
Надеюсь, это поможет людям, которые столкнутся с той же проблемой в будущем. Мне потребовалась неделя, довольно утомительная :)
решение2
Возможно, вам захочется изменить владельца файла или каталога.
chown имя_пользователя -R ваша_папка
У меня была та же проблема, и это решило ее.
решение3
Возможно, это сработает. У меня была та же проблема, и после 3 часов гугления я попробовал это:
Разрешение на папку
Последнее и последнее, что вам нужно сделать для завершения установки, это установить разрешения для папки. Для этого откройте командную строку и введите:
sudo find . -type f -exec chmod 664 {} +
sudo find . -type d -exec chmod 775 {} +
sudo chown -R vm_username:www-data ~/workspace
по крайней мере для меня, решил проблему с разрешениями, с которой я столкнулся.