Я использую PHP 7,3 + nginx на Centos. Мое приложение содержит подключенную папку, содержащую файлы с другого сервера. Мне нужно удалить эти файлы, как только я их не использую. Я использовал код ниже, чтобы удалить эти файлы. Код работает нормально, но некоторые из этих файлов создаются с дополнительными ограничениями (только для чтения), и мое приложение может удалить их, только если я вручную установлю для них chmod -R 775.
function remove_dir($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir."/".$object) == "dir"){
remove_dir($dir."/".$object);
}else {
unlink ($dir."/".$object);
}
}
}
reset($objects);
rmdir($dir);
return true;
}
return false;
}
У меня есть пробовал это:
$command = "chmod -R 775 ".$folder;
exec($command);
, но всегда заканчивалось на:
ПРЕДУПРЕЖДЕНИЕ: [пул www] дочерний n сказал в stderr: "chmod: изменение разрешений '/ folder / file' : Операция не разрешена "
Можно ли установить эти разрешения или мне нужно создать файл, который я хочу удалить, с уже установленными правами доступа?
Я пробовал это , но это также дает мне ошибку разрешения.
$command = "rm -rf {$local}";
exec($command, $output, $status);
сказал в stderr: «rm: не удается удалить« папку / файл »: разрешение запрещено»
РЕДАКТИРОВАТЬ: Таким образом, я прочитал много рекомендаций, и я понял, что лучше не делать это через веб-приложение, даже если оно просто работает внутри моей компании. Я создал скрипт, и я собираюсь запустить его через crontab. Решите мою проблему без каких-либо проблем с безопасностью.