Удалять файлы с помощью подстановочного знака - exec vs разорвать связь


Я работаю над php-скриптом, в котором я хочу удалить некоторые файлы из заданной папки с помощью подстановочного знака (*).
Я нашел несколько рабочих примеров, таких как этот , где используются функции unlink() и glob().

Теперь мне было интересно, можно ли также удалить файлы с помощью функции exec и такой команды, как rm -f /path/to/folder/_prefix_* ?
Существуют ли какие-либо риски для безопасности при использовании этого?
И если все в порядке, будет ли это лучше с точки зрения производительности?

РЕДАКТИРОВАТЬ:
Итак, из первых ответов я вижу, что действительно использование exec может быть приемлемым решением.
Как насчет проблем с производительностью? Есть ли шанс, что вариант exec может быть лучше (быстрее/менее требователен) по сравнению с методом glob/unlink?

Заранее благодарю вас

Author: Community, 2012-09-04

2 answers

Поскольку нет возможности для ввода данных, предоставленных пользователем, при использовании exec вместо glob/unlink нет проблем с безопасностью. Однако использование glob/unlink позволяет определять исключения:

foreach(glob("delete/*") as $f) {
    if( $f == "delete/notme.txt") continue;
    unlink($f);
}

И exec часто отключаются на общих серверах, поэтому glob/unlink более переносимы. Если у вас есть специальная настройка и вы не намерены отказываться от нее, вам не нужно беспокоиться об этом.

 12
Author: Niet the Dark Absol, 2012-09-03 21:51:28

Оба варианта могут быть хороши. Однако, если вы не управляете своим собственным сервером или находитесь на общем хостинге, команда exec может быть недоступна.

Чтобы быть на стороне сохранения, используйте glob и разорвите связь.

 2
Author: JvdBerg, 2012-09-03 21:52:51