2012-09-03 23 views
5

ワイルドカード(*)を使用して特定のフォルダからいくつかのファイルを削除するPHPスクリプトを作成しています。
私は、this oneのようないくつかの動作例を見つけました。ここでは、unlink()と​​3210関数が使用されています。ワイルドカードを使用してファイルを削除する - exec vs unlink

exec関数とrm -f /path/to/folder/_prefix_*のようなコマンドを使用してファイルを削除することもできますか?
これを使用してセキュリティ上のリスクはありますか?
もし問題なければ、パフォーマンス面では良いでしょうか?

編集:
したがって、最初の回答から私は確かにexecを使用して、それが許容される解決策になることがわかります。
パフォーマンスの問題はどうですか? glob/unlinkテクニックよりもexecオプションの方が良い(速い/少ない)場合がありますか?注入されるためにユーザが入力したデータのためのチャンスがないので

glob/unlinkexecを使用してもセキュリティ上の問題はありません、事前

+1

rmは問題ありません。セキュリティ上の問題は、誰がスクリプトを実行できるかによって異なります。 –

答えて

8

でいただきありがとうございます。しかし、glob/unlinkを使用すると、例外を定義することができます:

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

そしてexecは、多くの場合、共有サーバーで無効になっているので、glob/unlinkの移植です。専用の設定があり、それを放棄するつもりがない場合は、それを心配する必要はありません。

+0

Kolinkに返信いただきありがとうございます。私は所有しているサーバー上にあり、execは有効になっていて正常に動作しています。ある技術を使ってパフォーマンスを変えることができると思いますか? – CrisDeBlonde

+0

私は 'exec'が高速だと思いますが、' glob/unlink'は何が起こっているのかをスクリプトが常に知ることを可能にします - ウェブベースよりもコンソールアプリケーションにとって有益ですが、 、または削除されたファイルを一覧表示... –

1

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

保存側にするには、globを使用してリンクを解除します。

関連する問題