7

私はワイルドカード (*) を使用して特定のフォルダーからいくつかのファイルを削除したい php スクリプトに取り組んでいます。と関数が使用されて いるthis one
ようないくつかの実例を見つけました。unlink()glob()

今、私は疑問に思っていましたが、exec関数と次のようなコマンドを使用してファイルを削除しても大丈夫でしょrm -f /path/to/folder/_prefix_*うか?
これを使用してセキュリティ上のリスクはありますか?
そして、それがOKなら、パフォーマンスの面でより良いでしょうか?

編集:
したがって、最初の回答から、実際に使用execすることが許容できる解決策であることがわかります。
パフォーマンスの問題はどうですか?オプションがテクニックexecよりも優れている(より高速/要求が少ない)可能性はありますか?glob/unlink

前もって感謝します

4

2 に答える 2

13

ユーザー提供のデータが注入される可能性がないため、execoverを使用してもセキュリティ上の問題はありませんglob/unlink。ただし、 を使用glob/unlinkすると、例外を定義できます。

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

またexec、共有サーバーでは無効になっていることが多いためglob/unlink、移植性が高くなります。専用のセットアップがあり、それをあきらめるつもりがない場合は、心配する必要はありません。

于 2012-09-03T21:51:28.110 に答える
2

どちらのオプションも問題ありません。ただし、独自のサーバーを制御していない場合、または共有ホスティングを使用している場合は、exec コマンドを使用できませんでした。

保存側にするには、glob と unlink を使用します。

于 2012-09-03T21:52:51.857 に答える