chmod 777 в php - PullRequest
       25

chmod 777 в php

3 голосов
/ 16 февраля 2011

Если я создаю папку в php с помощью mkdir (), она имеет права доступа www-data: www-data user и 755.

Проблема в том, что я не могу удалить эту папку с помощью ftp-пользователя(zapbe: psasrv) Я попытался изменить папку с помощью chmod ($ path, "0777") в php, но это не работает.

Как сделать созданные папки и загруженные файлы доступными для чтения / удаления дляи www-data и ftp-пользователь?

Ответы [ 4 ]

5 голосов
/ 16 февраля 2011
bool chmod ( string $filename , int $mode )

В PHP они могут иметь некоторые ограничения безопасности, поэтому в зависимости от вашей конфигурации он может не работать.

Вышеприведенная функция возвращает логическое значение, чтобы сообщить вам, удалось ли изменить разрешения для сущностей.

if(!chmod($directory,0777))
{
    echo "Unable to chmod $direcotry";
}

Также цитата из PHP:

Текущий пользователь - это пользователь, под которым работает PHP. Вероятно, это не тот пользователь, которого вы используете для обычной оболочки или доступа по FTP. Режим может быть изменен только пользователем, который владеет файлом в большинстве систем.

Понимая выше, вы должны смотреть на chown

4 голосов
/ 16 февраля 2011

Чтобы удалить каталог, вам нужно иметь права на запись в родительский каталог, а не в тот, который вы хотите удалить. Чтобы обеспечить доступ на запись для родителя, хорошим подходом было бы сделать этого родителя владельцем какой-то группы, членами которой являются и www-data, и ваш пользователь ftp, и никогда не использовать разрешение 777. Также убедитесь, что в вашей родительской папке не установлен бит закрепления.

2 голосов
/ 16 февраля 2011

по умолчанию, когда вы создаете папку в * nix, другие пользователи не смогут удалить / изменить папку.

, чтобы изменить права доступа к папке, созданной www-data, выполните команду вPHP-скрипт из браузера, и он должен успешно обновиться

Примечание не ставьте новые разрешения в двойных кавычках, это должно быть восьмеричное число

chmod($path, 0777);
// not chmod($path, "0777);

Как только вы это сделаете, любой может изменить папку

0 голосов
/ 16 февраля 2011

Удалите двойную кавычку и попробуйте, а также проверьте владельца файла

chmod($path, 0777) 
...