【PHP入門】ファイルを削除する方法まとめヤマシタ2017/6/42018/12/18PHPではファイルを削除するためのunlink関数が用意されています。・特定の日付のファイルを削除する方法などの応用的な使い方に関しても解説していきます。まとめ作成したファイルを削除するまずはファイルを作成してみようまずはファイルの削除をするために、削除用のファイルを作成してみましょう。ファイルを作成するためには、fopen関数を使用します。fopen関数は、ファイルオープンに成功した場合はファイルポインタを返し、失敗した場合はFALSEを返します。PHPではファイルの読み書きなどの処理は、ファイルポインタに対して行います。以下にファイルを作成するサンプルを紹介します。sampleこのサンプルでは、fopen関数でfopen.txtを作成し、書き込みモードでオープンしています。次にfwrite関数で文字列を書き込み、fclose関数でクローズしています。ファイルの読み書きについては以下の記事でも詳しく解説していますので参考にしてください。2018年8月28日ファイルを削除する(unlink)次に、作成したファイルを削除します。ファイルを削除するには、unlink関数を使用します。)第一引数にはファイル名を指定します。ディレクトリ/ファイル名のようにフルパスで指定することもできます。第二引数にはコンテキストを指定します。unlink関数は、ファイルの削除に成功した場合はTRUE、失敗した場合はFALSEを返します。先ほど作成したfopen.txtを、unlink関数を使用して削除してみます。$file.'の削除に成功しました。$file.'の削除に失敗しました。';}?>fopen.txtfopen.txtの削除に成功しました。2019年1月16日ファイルが削除できない場合PHPではunlink関数を使用してファイルを削除できることがわかりましたが、まれにファイルの削除に失敗する場合があります。ファイルの削除に失敗してしまう要因としては、対象のファイルを削除する権限が無いことがまず挙げられます。MacやLinux系のOSだったらターミナルコマンドの「chown」でファイルの所有者を変更したり、「chmod」でファイルの実行権を変更するなどの方法があります。PHPのchmod関数でもファイルの実行権を変更することが可能です。)chmod関数は第一引数にファイル名を指定し、第二引数にファイルの権限を付与するモードを指定します。?>また、もう1つファイルの削除に失敗してしまう要因として、ファイルを開いたままの状態で削除を実行してしまう例があります。ファイル開いたままunlink関数で削除しようとしても失敗します。$file.'の削除に成功しました。$file.'の削除に失敗しました。?>/Users/Shared/PHP/php1.txtの削除に失敗しました。ディレクトリ内のファイルを削除するPHPでは、ディレクトリ内の複数のファイルを纏めて削除することが可能です。ファイルを纏めて削除するには、パターンにマッチしたパス名を取得するglob関数を使用します。glob関数は以下のように記述します。)第一引数には検索対象のファイルのパターンを指定し、第二引数にはGLOB_MARK、GLOB_NOSORTなどのフラグを指定します。(フラグの詳細についてはここでは割愛します)以下にglob関数とunlink関数を使用して、ディレクトリのファイルを全て削除する方法を記述します。$file.'の削除に成功しました。$file.'の削除に失敗しました。?>/Users/Shared/PHP/php1.txtの削除に成功しました。/Users/Shared/PHP/php2.txtの削除に成功しました。/Users/Shared/PHP/php3.txtの削除に成功しました。サンプルではglob関数で、引数に対象のディレクトリを指定し、ディレクトリに存在している全てのファイルを取得しています。glob関数で‘*’を指定すると、対象のディレクトリの全てのファイルを取得できます。glob関数は戻り値にファイル名の配列を返しますので、取得した配列に対してforeachのループで配列の要素(ファイル名)に対してunlink関数で1つずつ削除しています。このようにglob関数とunlink関数を使用すれば、ディレクトリに存在するファイルを全て削除することができます。場合によっては消してはいけない重要なファイルまで誤って削除してしまう可能性もあります。そのため、ファイルを全て削除するときは十分注意しましょう。ファイルの行を削除するファイルの指定した行のみを削除したい場合はfile関数を使用して、ファイル全体を配列で格納した後に、unset関数で指定した要素(行)を削除する方法があります。file関数は以下のように記述します。)第一引数にファイル名を指定し、第二引数にフラグ、第三引数にはコンテキストを指定します。今回はファイルの行を削除するのみで使用するため、引数の詳細は割愛します。実際にファイルの指定した行のみを削除する方法を見ていきましょう。サンプルで使用するファイルは以下のように記述しています。?>実行結果appleoranegemelonpineapple実行結果のとおり、要素番号3(配列は0から始まるため4行目)の行の値が削除されていることがわかりますね。ファイルの書き込みはfile_put_contents関数を使用すると、fopen関数を使用する手間が省けるので便利です。日付を指定してファイルを削除する特定の日付のファイルを削除するためには、日付関数で日付を指定する必要があります。以下に日付が一週間以上前のファイルだったら、ファイルを削除するサンプルを紹介します。$file.'の削除に成功しました。$file.'の削除に失敗しました。?>このサンプルではdate関数で引数にstrtotime関数を使用して一週間前の日付を取得します。day’とすれば一週間前の日付が取得できます。次に前述したglob関数で指定したディレクトリのファイルを全て取得して、戻り値の配列をforeachのループで1つずつファイルを取得しています。ループの中でglob関数で取得したファイルの時刻をfilemtime関数を使用してUNIXタイムスタンプを取得しています。UNIXタイムスタンプを日付フォーマットするには、date関数の引数で日付パターンと取得したUNIXタイムスタンプを指定する必要があります。2018年5月25日PHPについてもっと知りたい方へここでは、PHPでファイルを削除するさまざまな方法を解説しました。日付を指定して削除する方法などについて解説しました。ファイルを削除する処理はPHPに限らず、さまざまなプログラミング言語で使用しますのでぜひ覚えておきましょう。ファイルを削除する方法を忘れてしまったら、この記事を思い出してくださいね。TweetPocket無料でSEからWebエンジニアへ転職しませんか?侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、システムエンジニアという職業だけどコードが書けない事務作業が多くスキルがないため将来が不安スクールに通うと完全未経験者と同じスタートになるからレベルが合わないという、すでに知識があるSEならではのお悩みがあることに気づきました。弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。こちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。無料体験レッスンを予約する書いた人ヤマシタシステムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。