Сбой fopen (разрешение запрещено), хотя все родительские папки 775

Я пытаюсь создать файл из PHP, используя следующий код:

$config_file = fopen( '/home/the-user/domains/the-domain/public_html/the-folder/the-file.php', 'w');

Папка, в которой будет находиться этот файл, создается DirectAdmin. Поэтому PHP обычно не имеет доступа к этой папке. Из-за этого я добавил apache пользователь в группу пользователей, которая используется DirectAdmin.

Я использую следующее, чтобы изменить разрешения вновь созданной папки:

exec('sudo chmod 775 /home/the-user/domains/the-domain/public_html/the-folder/');

Даже после всего этого я все равно получаю failed to open stream: Permission denied ошибка.

Я просмотрел много разных постов и думаю, что попробовал почти все безуспешно.

Может кто-нибудь сказать мне, что я делаю не так?

0

Решение

Сообщение об ошибке довольно ясно, PHP не имеет доступа для записи в файл. Теперь, так как вы не упомянули, какую ОС и веб-сервер вы используете, я должен сделать пару предположений, поскольку это, очевидно, Unix, команды будут одинаковыми, но используемый вами веб-сервер определит, какие runuser требует доступа (этот следующий пример будет для Apache на Ubuntu)

поэтому убедитесь, что файл доступен для записи www-data группа пользователей.

exec('sudo chown www-data:www-data /home/the-user/domains/the-domain/public_html/the-folder/');

или через командную строку

chown www-data:www-data /home/the-user/domains/the-domain/public_html/the-folder/

это изменит пользователя / группу этого конкретного файла.

Чтобы проверить, под каким пользователем работает ваш веб-сервер, вы можете использовать следующую команду для вывода списка всех процессов и их запускающего пользователя.

ps auxf | more

Еще одна вещь, которую нужно иметь в виду, это безопасность с курса chmod 755Я бы не рекомендовал использовать это для php-файлов, как общее правило, я следую этому.

Файлы обычно 644, а папки 755. Это для нормальной работы.

Определенные файлы, которые должны быть помечены только для чтения, часто устанавливаются на 444 или в некоторых случаях на 400.

0

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector