разорвать связь не удается удалить файл


Я разочарован удалением файла в ubuntu с помощью PHP unlink().

Я создал очень простую симуляцию следующим образом:

  1. создайте папку с именем "файлы" под /var/www с разрешением 766.
  2. загрузите файл, скажем "image.png" в эту папку и установите разрешение в 666
  3. создайте php-файл с именем delete.php, установите разрешение на 644 и загрузите в каталог /var/www
  4. Вызов файла в браузере (я использую локальный хост)

В "image.png" все еще существует в каталоге "файлы"

Вот php-скрипт delete.php :

$filename = 'image.png';
$file = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . $filename;
unlink($file);

Я также попробовал следующий сценарий:

$filename = 'image.png';
$dir = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'files';
chdir($dir);
unlink($filename);

Но все равно не могу удалить файл.

 4
Author: j0k, 2013-02-21

2 answers

Папка/владелец каталога может быть другим пользователем, чем пользователь, используемый для запуска php.

Вы должны создать папку с назначенным пользователем php. Если вы не можете сделать это самостоятельно, попросите вашего провайдера сделать это. Именно так я решил аналогичную проблему.

Один пользователь не может удалять файлы другого пользователя в системе unix. Если бы вы установили для него значение 777, то могли бы удалить его...

 2
Author: Tschallacka, 2013-02-21 07:52:14

Разорвать связь выдает предупреждение о сбое. Проверьте, видно ли вам E_WARNING, чтобы узнать, что происходит.

Обычно это сводится к правам пользователя. Имейте в виду, если ваш скрипт выполняется браузером, обычно пользователь с именем wwwrun или wwwdata (или что-то подобное) выполняет его на вашем сервере.

Проверьте, есть ли у этого пользователя разрешения на удаление, затем повторите попытку.

 5
Author: Bjoern, 2013-02-21 08:05:49