PHPでファイルを1個または複数削除する簡単な方法

  • このエントリーをはてなブックマークに追加
  • Pocket

スポンサードリンク

PHPでたった1行で簡単にファイル削除する方法と、該当する複数のファイルを一気に削除する方法をご紹介します。

なぜかファイルを削除できないよくあるエラーも紹介します。

 

※ファイルを削除する際、誤って必要なファイルが削除されないよう充分注意してください。

1つのファイルを削除

unlink関数で削除

ファイルを削除します。

unlink()を使うだけで、簡単に削除できます。

複数のファイルを削除

glob関数とunlink関数で削除

glob()はパターンにマッチする全てのファイルを取得できます。

対象ファイル

file.txt
file2.txt
file3.txt

以下のようにforeach()でループしながら削除していきます。

file.txtを削除しました。
file2.txtを削除しました。
file3.txtを削除しました。

上記のように.txtの拡張子が付いたファイルが削除されました。

複数のファイル削除の動作説明

先ほどのサンプルは以下のように動作しました。

  1. glob関数に*.txtを指定し、拡張子が.txtのファイルを全て取得
    globで取得した配列をforeach()でループ処理する
    glob()は条件に合うファイルを全て取得して、配列化してくれる
    glob()に指定した*(アスタリスク)はワイルドカードと呼ばれ、全ての文字列に該当するという意味
    foreach (glob(‘*.txt’) as $file) {
  2. unlink()で拡張子が.txtのファイルを1つずつ削除していく
    unlink($file);
  3. 削除済みのメッセージを表示させる
    echo $file.’を削除しました。<br>’;
  4. glob()で取得したファイルがなくなるまで、上記の処理を繰り返す

glob()が便利ですね。

参考:PHPのforeachで配列処理

ファイルが削除できない場合

ファイルが削除できない場合のよくあるエラーを2つご紹介します。

該当のファイルがない

対象のファイルが存在しなかったり、パスが間違っていると以下のエラーが出ます。

Warning: unlink(): No such file or directory in…

「そのようなファイルまたはディレクトリは存在しませんよ!」と言われていますね。

拡張子やファイル名は合ってるか、ディレクトリ階層をチェックしたり、パスの指定が間違っていないか再度確認してみましょう。

fopenで開いたファイルをfcloseしていない

ファイルをfwrite()を使って書き込む際、fopen()でファイルをオープンさせますが、最後にfclose()をしないとたまにエラーになります。

以下のようなエラーが出ます。

Warning: unlink(file.txt) [function.unlink]: Permission denied in…

一見パーミッションエラーのエラーかと思い、パーミッションを適切に設定してもこのエラーが出るので、ハマるポイントかもですね。

参考:PHPでのファイル書き込みとパーミッションエラー解決法

PHPではfclose()をしなくてもプログラムが終了すると自動的にファイルはクローズされるので、このエラーはなかなか出ないとは思いますが、もし出たらきちんとfclose()しましょう。

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す

*