Удалять файлы с помощью подстановочного знака - exec vs разорвать связь
Я работаю над php-скриптом, в котором я хочу удалить некоторые файлы из заданной папки с помощью подстановочного знака (*).
Я нашел несколько рабочих примеров, таких как этот , где используются функции unlink()
и glob()
.
Теперь мне было интересно, можно ли также удалить файлы с помощью функции exec
и такой команды, как rm -f /path/to/folder/_prefix_*
?
Существуют ли какие-либо риски для безопасности при использовании этого?
И если все в порядке, будет ли это лучше с точки зрения производительности?
РЕДАКТИРОВАТЬ:
Итак, из первых ответов я вижу, что действительно использование exec
может быть приемлемым решением.
Как насчет проблем с производительностью? Есть ли шанс, что вариант exec
может быть лучше (быстрее/менее требователен) по сравнению с методом glob/unlink
?
Заранее благодарю вас
2 answers
Поскольку нет возможности для ввода данных, предоставленных пользователем, при использовании exec
вместо glob/unlink
нет проблем с безопасностью. Однако использование glob/unlink
позволяет определять исключения:
foreach(glob("delete/*") as $f) {
if( $f == "delete/notme.txt") continue;
unlink($f);
}
И exec
часто отключаются на общих серверах, поэтому glob/unlink
более переносимы. Если у вас есть специальная настройка и вы не намерены отказываться от нее, вам не нужно беспокоиться об этом.
Оба варианта могут быть хороши. Однако, если вы не управляете своим собственным сервером или находитесь на общем хостинге, команда exec может быть недоступна.
Чтобы быть на стороне сохранения, используйте glob и разорвите связь.