PHPでファイルを削除する!unlink関数の使い方5選 – Japanシーモア

PHPでファイルを削除する!unlink関数の使い方5選

PHPのunlink関数でファイルを削除する方法を学ぶPHP
この記事は約7分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

このサービスは複数のSSPによる協力の下、運営されています。

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

プログラミング言語PHPを学び始めると、ファイルの操作は避けて通れない重要なテーマになります。

その中でも「ファイルの削除」は頻繁に行う操作の一つであり、そのための便利な関数がPHPには提供されています。その名も「unlink」関数です。

この記事を読むことで、PHPのunlink関数を用いたファイルの削除方法をマスターすることができます。

●PHPとunlink関数について

PHPは、Webサイトのバックエンドを構築するためのサーバーサイドのスクリプト言語です。

PHPにはファイルの作成、読み込み、書き込み、そして削除といったファイル操作を行うための豊富な関数が用意されています。

その中の一つが、我々が今回深掘りする「unlink」関数です。

unlink関数は、指定したパスのファイルを削除するための関数です。

関数名の’unlink’は、「リンクを解除する」という意味で、UNIXシステムではファイルを削除することを「リンクを解除する」と表現します。

これが関数名の由来となっています。

●unlink関数の基本的な使い方

unlink関数の基本的な使い方は非常にシンプルです。

削除したいファイルのパスを引数として指定します。

○サンプルコード1:基本的なファイル削除

このコードではunlink関数を使って”testfile.txt”という名前のファイルを削除するコードを紹介しています。

この例では”testfile.txt”を指定してunlink関数を実行しています。

<?php
$filename = "testfile.txt";

if (unlink($filename)) {
    echo "ファイルが正常に削除されました。";
} else {
    echo "ファイルの削除に失敗しました。";
}
?>

このコードを実行すると、”testfile.txt”というファイルが存在する場合には、そのファイルが削除されます。そして、”ファイルが正常に削除されました。”というメッセージが出力されます。

一方、”testfile.txt”というファイルが存在しない場合や何らかの理由で削除できなかった場合には、”ファイルの削除に失敗しました。”というメッセージが出力されます。

○サンプルコード2:エラーチェック付きのファイル削除

次に、エラーチェックを追加したunlink関数の使用例を紹介します。

エラーチェックを行うことで、ファイルが存在しない場合やファイルの削除ができなかった理由を確認することができます。

これにより、エラーの対処がより具体的に行えるようになります。

このコードではファイルの存在チェックとエラーメッセージの出力を追加しています。

具体的には、”testfile.txt”というファイルが存在する場合にはそのファイルを削除し、存在しない場合にはエラーメッセージを出力します。

また、ファイルの削除に失敗した場合にもエラーメッセージを出力します。

<?php
$filename = "testfile.txt";

if (file_exists($filename)) {
    if (unlink($filename)) {
        echo "ファイルが正常に削除されました。";
    } else {
        echo "ファイルの削除に失敗しました。";
    }
} else {
    echo "ファイルが存在しません。";
}
?>

このコードを実行すると、まず”testfile.txt”というファイルが存在するかどうかをfile_exists関数でチェックします。

ファイルが存在する場合にはunlink関数でファイルを削除し、ファイルの削除が成功したかどうかをチェックします。

ファイルの削除に成功した場合には”ファイルが正常に削除されました。”と出力し、削除に失敗した場合には”ファイルの削除に失敗しました。”と出力します。

一方、”testfile.txt”というファイルが存在しない場合には”ファイルが存在しません。”と出力します。

これらのコードを試すときは、テスト用のファイルを用意するか、または削除しても問題のないファイルを指定してください。

実行した結果、意図しないファイルが削除されると、元に戻すことはできません。

●unlink関数の応用例

次に、unlink関数の応用例として、ディレクトリ内の全ファイルを削除する方法や、特定の拡張子のファイルだけを削除する方法、そしてファイル削除の前にファイルの存在を確認する方法を見ていきましょう。

これらの方法を知っておくと、より具体的なニーズに対応することができます。

○サンプルコード3:ディレクトリ内の全ファイルを削除

このコードではディレクトリ内の全ファイルを削除する方法を紹介しています。

この例では、”mydir”というディレクトリ内の全てのファイルを削除しています。

<?php
$dir = 'mydir/';

foreach (glob($dir.'*') as $file) {
    if(is_file($file)) {
        unlink($file);
    }
}
?>

このコードを実行すると、”mydir”ディレクトリ内の全てのファイルが削除されます。

ただし、ディレクトリ自体やその下のサブディレクトリは削除されません。

glob関数を用いてディレクトリ内の全てのファイルとディレクトリを取得し、その中からis_file関数でファイルだけを選び出し、unlink関数で削除しています。

○サンプルコード4:特定の拡張子のファイルだけを削除

次に、特定の拡張子を持つファイルだけを削除する方法を紹介します。

このコードでは、”mydir”ディレクトリ内の”.txt”という拡張子を持つ全てのファイルを削除しています。

<?php
$dir = 'mydir/';
$extension = '.txt';

foreach (glob($dir.'*'.$extension) as $file)

 {
    if(is_file($file)) {
        unlink($file);
    }
}
?>

このコードを実行すると、”mydir”ディレクトリ内の”.txt”という拡張子を持つ全てのファイルが削除されます。

glob関数のパターンに拡張子を含めることで、特定の拡張子を持つファイルだけを取得します。

○サンプルコード5:ファイル削除の前にファイルの存在を確認

最後に、ファイルを削除する前にそのファイルが存在するかどうかを確認する方法を紹介します。

このコードでは、”testfile.txt”というファイルが存在する場合にだけそのファイルを削除しています。

<?php
$filename = 'testfile.txt';

if (file_exists($filename)) {
    unlink($filename);
    echo "ファイルが正常に削除されました。";
} else {
    echo "ファイルが存在しません。";
}
?>

このコードを実行すると、”testfile.txt”が存在する場合にはそのファイルが削除され、”ファイルが正常に削除されました。”と出力されます。

一方、”testfile.txt”が存在しない場合には何も削除されず、”ファイルが存在しません。”と出力されます。

●unlink関数の注意点と対処法

PHPのunlink関数を使用する際の注意点を紹介していきます。

一つは、削除しようとしているファイルが存在しない場合、unlink関数は警告を発生させます。

そのため、削除しようとしているファイルが存在することを確認するか、もしくはエラー制御演算子を使用して警告を無視する必要があります。

また、削除しようとしているファイルが書き込み可能でない場合も、unlink関数は失敗します。

その場合も、事前にファイルが書き込み可能であることを確認するか、適切なパーミッションを設定する必要があります。

まとめ

PHPのunlink関数を使用すると、簡単にファイルを削除することができます。

基本的な使用方法から、ディレクトリ内の全ファイルの削除、特定の拡張子のファイルの削除、存在確認を伴うファイルの削除といった応用的な使用方法まで、様々な使い方を覚えておくと便利です。

ただし、削除したファイルを元に戻すことはできないため、unlink関数の使用は慎重に行う必要があります。