разорвать связь не удается удалить файл
Я разочарован удалением файла в ubuntu с помощью PHP unlink().
Я создал очень простую симуляцию следующим образом:
- создайте папку с именем "файлы" под /var/www с разрешением 766.
- загрузите файл, скажем "image.png" в эту папку и установите разрешение в 666
- создайте php-файл с именем delete.php, установите разрешение на 644 и загрузите в каталог /var/www
- Вызов файла в браузере (я использую локальный хост)
В "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);
Но все равно не могу удалить файл.
2 answers
Папка/владелец каталога может быть другим пользователем, чем пользователь, используемый для запуска php.
Вы должны создать папку с назначенным пользователем php. Если вы не можете сделать это самостоятельно, попросите вашего провайдера сделать это. Именно так я решил аналогичную проблему.
Один пользователь не может удалять файлы другого пользователя в системе unix. Если бы вы установили для него значение 777, то могли бы удалить его...
Разорвать связь выдает предупреждение о сбое. Проверьте, видно ли вам E_WARNING, чтобы узнать, что происходит.
Обычно это сводится к правам пользователя. Имейте в виду, если ваш скрипт выполняется браузером, обычно пользователь с именем wwwrun
или wwwdata
(или что-то подобное) выполняет его на вашем сервере.
Проверьте, есть ли у этого пользователя разрешения на удаление, затем повторите попытку.