最終更新日:
公開日:
レシピ
ファイル / ディレクトリ
PHPでファイル/ディレクトリを扱う
PHPでファイル/ディレクトリに対して、どのような操作ができるかを紹介します。
この記事のポイント
- PHPでファイル/ディレクトリに対してどのような操作ができるか分かる
- ファイル/ディレクトリのことを調べる
目次
ファイル/ディレクトリに対してどのような操作ができるか
PHPではファイル/ディレクトリの読み込みや書き込み、新規作成、削除などのファイル操作はもちろん、ファイルサイズ(容量)やMIMEタイプ、パーミッションなど各種情報を取得することができます。
今回は「ファイル情報の取得」「パーミッションの確認」「ファイルデータの取得」「ファイル操作」の4つに分けて、PHPでどのようなことができるかを紹介していきます。
ファイル/ディレクトリの情報を取得する
ファイル/ディレクトリを操作する際に、事前準備としてすでにあるファイル/ディレクトリの情報を取得し、処理が適切に行えるかを確認するケースはよくあります。
PHPではファイル/ディレクトリについて、次のような情報を取得することができます。
- ファイルサイズを取得する
- ファイルやディレクトリが存在するか確認する
- ファイルの種類(MIMEタイプ)を確認する
- ファイル / ディレクトリを最後に更新した時刻を取得する
- ファイルの拡張子を取得する
- パスからファイル名を取得する
- ファイルへ最後にアクセスした時刻を取得する
- ディレクトリ内のファイルを基準にディレクトリへの最終アクセス時刻を取得する
- ディレクトリ内のファイル一覧を取得する
- パスの対象がファイル/ディレクトリであるかを確認する
- ファイルの相対パスから絶対パスを取得する
- POST通信でアップロードされたファイルか確認する
- ディレクトリの使用可能な空き容量を取得する
特に、同名のファイル/ディレクトリが存在するかの確認はファイル操作において重要なので、「ファイルやディレクトリが存在するか確認する」はよく使います。
ファイル/ディレクトリの権限を確認する
続いて、ファイル操作において重要なパーミッション(アクセス権限)の確認を行う方法について紹介します。
ファイル操作において適切なパーミッションはマストなため、非常に重要なポイントです。
パーミッションは大きく分けて「読み取り」「書き込み」の2種類があり、それぞれに対応した確認方法が用意されています。
さらに詳しくパーミッションを確認したい時は、fileperms関数で確認する方法もあります。
ファイルデータを取得する
ファイル内にあるデータを取得する方法だけでもいくつか手段があり、取得方法については一括取得、もしくは1行ずつ取得のいずれかを必要に応じて選ぶことができます。
ファイルデータを一括取得する場合は、file_get_contents関数、file関数のいずれかで手軽に取得できます。
一方、データを1行ずつ取得する場合についてはfgets関数、もしくはfgetss関数のいずれかを、fopen関数やfclose関数と組み合わせて行う形になります。
そのため、「ファイルを開く」「データを取得」「ファイルを閉じる」といった手順を踏んでのファイルアクセスが必要になります。
ファイルを操作する
ファイルの操作については、fopen関数で対象のファイルを開き、ファイルデータの読み込み&書き込みを行い、最後にfclose関数でファイルを閉じる形が基本の流れとなります。
このファイル処理の流れについて、詳しくは次の記事をご覧ください。
また、操作中のファイルは同時操作を防ぐためのロックを行うことができます。
ほぼ同時のタイミングに、同じファイルへの書き込み処理があっても意図しない動作を防ぐためにも重要な機能です。
その他、目的別に次のようなファイル操作の手段が用意されています。