2

У меня есть 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 корень корень 4096 19 апреля 03:09

/Главная/

[cabox @ box-codeanywhere home] $ ls -ld
drwxr-xr-x 3 root root 4096 16 июня 2014 г.

/ Главная / cabox /

[cabox @ box-codeanywhere ~] $ ls -ld
drwxrwxrwx 7 Cabox Cabox 4096 14 апреля 11:48

/ Главная / cabox / рабочее пространство /

[cabox @ box-codeanywhere рабочее пространство] $ ls -ld
drwxrwxrwx 4 Cabox Cabox 4096 19 апреля 04:27

Я не могу изменить разрешения для /, так как имя пользователя - root, я думаю, это потому, что мое имя пользователя - cabox

[cabox @ box-codeanywhere рабочее пространство] $ id
uid = 500(cabox) gid = 500(cabox) групп = 500(cabox)

index.php пытается создать файл file.txt находится в /home/cabox/workspace/

-rwxrwxrwx 1 Cabox Cabox 18608 19 апреля 05:12 index.php

Что я делаю неправильно?

Заранее спасибо!

3 ответа3

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

это добилось цели.

Теперь в любом другом месте кода, если я изменю имя пользователя на «www-data», я потеряю способность работать на сервере, создавать, изменять, удалять файлы. Я думал, что решение состоит в том, чтобы установить права как пользователя (cabox) и группы (www-data) и дать им одинаковые права, но пока это не сработало, так что все еще нужно выяснить этот бит

Надеюсь, что это поможет людям, которые столкнутся с той же проблемой в будущем. Мне потребовалась неделя, довольно разочаровывающая :)

0

Вы можете изменить владельца файла или каталога

chown user -R твоя папка

, У меня была такая же проблема, и это исправило мою проблему ..

0

Возможно, это может сработать, у меня возникла та же проблема, и после 3 часов поиска в Google я попробовал это:

Разрешение папки

Последнее и последнее, что вам нужно сделать для завершения установки, - это установить разрешения для папки. Для этого откройте командную строку и введите:

sudo find . -type f -exec chmod 664 {} + 
sudo find . -type d -exec chmod 775 {} + 
sudo chown -R vm_username:www-data ~/workspace

по крайней мере для меня, решите вопрос разрешения, которое у меня было.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .