サーバー上のファイル削除方法
●簡単に書いてみた
if( file_exists("【ファイルパス】") ){ if(!@unlink("【ファイルパス】")){ echo 【ファイルパス】."ファイルの削除に失敗しました。
"; } }
ファイルの存在を確認してそのファイルを削除するだけのコードです。
これでも大丈夫ですが、稀に?Pathを直書きしてると認識されないときがあるようです。(サーバーの設定で直るとか言う話も)
そこで次の書き方
●サーバーのファイル名を取得して確実性を上げてみた
$path = "【任意のディレクトリ】"; $file_Format = "【任意の拡張子】"; $file_name = explode(".", $file); $buff = $path."/".$file_name[0].$file_Format; $del_filename = glob($buff); $cnt = count($del_filename); for($i = 0; $i < $cnt; $i++) { if( file_exists( $del_filename[$i] ) ){ if(!@unlink($del_filename[$i])){ echo "{$del_filename[$i]}ファイルの削除に失敗しました。
"; } } }
ファイル名を取得して ‘.’ をキーに分割して配列化
配列の 0 に拡張子を除いたファイル名が入るので取得したファイル名を使用してパスを生成
glob関数を使用してファイルを読み込む(globの理由は後ほど)
ファイルの個数を確認(今回は1件のみだったんでここは必要なかった)
あとは簡単な方と同じ処理です。
glob関数を使ってる理由は、今回は指定条件のファイルだったので何でも良かったのですが
例えば
・同じファイル名だけど拡張子が違うものでも全て削除したい
・ファイル名は関係なくlogファイルだけ全て削除させたい
など条件が曖昧な場合に『ワイルドカードが使える』ので色々無駄な処理する必要がなくなるのです!
これ超便利・・・
拡張子が違うものだったら『testfile.*』で同じ拡張子だったら『*.log』
取得したものを$buffに指定してあげると楽に削除できます(*・ω・)
こんな感じで今年もよろしくお願いします[壁]Д゚)ソー