PHP File() の処理と関数

⚡ スマートサマリー

PHPのファイル処理では、サーバー上でファイルを作成、読み取り、書き込み、コピー、削除するための豊富な組み込み関数が利用できます。このチュートリアルでは、file_exists、fopenとそのモード、fwrite、fclose、fgets、copy、unlink、file_get_contentsについて、実践的な例を交えながら解説します。

  • 📄 ファイルの保存先: ファイルには設定情報、ログ、および単純なデータが格納され、データベースと比較して安価な永続ストレージオプションとなる。
  • 🔍 ファイルの確認: file_exists() は、ファイルの読み取りや作成を行う前にファイルが存在するかどうかを確認し、エラーを回避します。
  • 📂 ファイルを開く: fopen() は、読み取り、書き込み、追記を制御する r、w、a などのモードでファイルを開きます。
  • ✍️ 執筆と締めくくり: fwrite() はファイルハンドルにデータを送信し、fclose() は処理が完了したらハンドルを解放します。
  • ???? ファイルを読む: fgets() は一度に 1 行ずつ読み込むのに対し、file_get_contents() はファイル全体を 1 つの文字列として返します。
  • 🗂️ コピーして削除: copy() はファイルを新しいパスに複製し、unlink() はサーバーからファイルを完全に削除します。
  • 🤖 AIアシスト: AIツールは、ファイル解析コードを生成し、権限エラーやストリームを開けなかったエラーを迅速に解決できます。

PHPファイル処理

ファイルとは

ファイルは、コンピュータ上に情報を保存するための単なるリソースです。

ファイルは通常、次のような情報を保存するために使用されます。

  • プログラムの構成設定
  • 電話番号と連絡先名などの単純なデータ。
  • 画像、写真、その他類似のメディア。

PHP ファイル形式のサポート

PHP ファイル関数は、次のような幅広いファイル形式をサポートしています。

  • ファイル.txt
  • ファイル.ログ
  • ファイル.custom_extension、例: file.xyz
  • ファイル.csv
  • ファイル.gif、ファイル.jpg、および類似の画像フォーマット

ファイルは様々な状況で役立ちます。

  • これらは、DBMSシステムを管理するために別のソフトウェアやスキルを必要とするデータベースと比較して、単純なデータに対して永続的かつ費用対効果の高いデータストレージソリューションを提供する。
  • サーバーログなどの単純なデータを保存し、後で取得して分析したい場合。
  • プログラム設定(例:program.ini)を保存したい

PHPファイル関数

PHPは、豊富な組み込み関数群を通じて、ファイルを操作するための便利な方法を提供します。

Operaなどのティンシステム Windows (NAIST) と macOS 大文字と小文字は区別されませんが、 Linux or Unixの オペレーティング システムでは大文字と小文字が区別されます。

ファイル名に小文字のみを使用するなどの命名規則を採用することは、プラットフォーム間の互換性を最大限に確保するための良い方法です。

それでは、最もよく使われるPHPのファイル関数をいくつか見ていきましょう。

PHP file_exists()関数

この関数は、ファイルが存在するかどうかを判断するために使用されます。

  • ファイルを処理する前に、そのファイルが存在するかどうかを知りたい場合に便利です。
  • 新しいファイルを作成するときに、そのファイルがサーバー上に存在しないようにする場合にも、この関数を使用できます。

file_exists関数の構文は以下のとおりです。

<?php
file_exists($filename);
?>

ここに、

  • 「file_exists()」は、ファイルが存在する場合は true、存在しない場合は false を返す PHP 関数です。
  • 「$filename」は、チェック対象ファイルのパスとファイル名です。

以下のコードは、file_exists関数を使用して、my_settings.txtファイルが存在するかどうかを判定します。

<?php
if (file_exists('my_settings.txt'))
{
echo 'file found!';
}
else
{
echo 'my_settings.txt does not exist';
}
?>

上記のコードを file_function.php という名前のファイルに保存します。htdocs の phptuts フォルダにファイルを保存したと仮定して、 URL http://localhost/phptuts/file_function.php ブラウザで以下のコマンドを実行してください。すると、次の結果が表示されます。

PHP file_exists()関数

PHP fopen()関数

fopen関数はファイルを開くために使用されます。構文は以下のとおりです。

<?php
fopen($file_name,$mode,$use_include_path,$context);
?>

ここに、

  • 「fopen」はPHPのファイルを開く関数です
  • 「$file_name」は開くファイルの名前です。
  • 「$mode」は、ファイルを開くモードを指定します。以下の表に各モードを示します。
モード 詳細説明
r • ファイルを最初から読み取ります。
・ファイルが存在しない場合はfalseを返します。
• 読み取り専用
r+ • ファイルを最初から読み取る
・ファイルが存在しない場合はfalseを返します。
• 読み書き
w • 最初にファイルに書き込む
・ファイルの長さをゼロに切り詰める
・ファイルが存在しない場合は、作成を試みます。
• 書き込みのみ
w+ • ファイルの先頭に書き込み、ファイルの長さをゼロに切り詰めます。
・ファイルが存在しない場合は、作成を試みます。
• 読み書き
a • ファイルの最後に追加
・ファイルが存在しない場合は、作成を試みます。
• 書き込みのみ
a+ • ファイルの最後に追加
・ファイルが存在しない場合は、作成を試みる
• 読み書き
  • 「$use_include_path」はオプションで、デフォルトはfalseです。trueに設定すると、関数はインクルードパスも検索します。
  • 「$context」はオプションであり、コンテキストのサポートを指定するために使用できます。

PHP fwrite()関数

fwrite関数はファイルへの書き込みに使用されます。

構文は次のようになります。

<?php
fwrite($handle, $string, $length);
?>

ここに、

  • 「fwrite」はファイルに書き込むためのPHP関数です
  • 「$handle」はファイルポインタリソースです
  • 「$string」はファイルに書き込むデータです。
  • 「$length」は省略可能で、ファイルの最大長を指定するために使用できます。

PHP fclose()関数

PHPでは、fclose()関数は既に開いているファイルを閉じるために使用されます。

構文は次のようになります。

<?php
fclose($handle);
?>

ここに、

  • 「fclose」は PHP関数 開いているファイルを閉じるため
  • 「$handle」はファイルポインタリソースです。

それでは、my_settings.txt を作成する例を見てみましょう。fopen、fwrite、fclose 関数を使用します。

「create_my_settings_file.php」以下のコードは上記の例を実装しています。

ファイルをオープンする
<?php

$fh = fopen("my_settings.txt", 'w')

or

die("Failed to create file"); ?>
ファイルを閉じる
<?php

fclose($fh);

?>
ファイルを作成
<?php

$fh = fopen("my_settings.txt", 'w') or die("Failed to create file");

$text = <<<_END

localhost;root;pwd1234;my_database

_END;

fwrite($fh, $text) or die("Could not write to file");

fclose($fh);

echo "File 1 written successfully"; ?>

コードのテスト

Video Cloud Studioで URL http://localhost/phptuts/create_my_settings.php あなたのブラウザに表示されます。

次のページが表示されます。

PHPのfclose関数

注: ディスクがいっぱいであるか、ファイルを書き込む権限がない場合は、エラー メッセージが表示されます。

元に戻す URL http://localhost/phptuts/file_function.phpどのような結果が得られますか?

PHP fgets()関数

fgets関数は、PHPファイルを1行ずつ読み込むために使用されます。基本的な構文は以下のとおりです。

<?php
fgets($handle);
?>

ここに、

  • 「fgets」は、ファイルの行を読み込むためのPHP関数です。
  • 「$handle」はファイルポインタリソースです。

それでは、fopen関数とfgets関数を使ってmy_settings.txtファイルを読み込む例を見てみましょう。

read_my_settings.php の下のコードは、上記の例を実装しています。

<?php
$fh = fopen("my_settings.txt", 'r') or die("File does not exist or you lack permission to open it");
$line = fgets($fh);
echo $line; fclose($fh);
?>

ここに、

  • 「fopen」関数は、ファイルパスで指定されたファイルへのポインタを返します。
  • エラーが発生した場合、「die()」関数が呼び出されます。この関数はメッセージを表示し、スクリプトの実行を終了します。

PHP copy()関数

PHPのcopy関数は、ファイルをコピーするために使用されます。基本的な構文は以下のとおりです。

<?php
copy($file,$copied_file);
?>

ここに、

  • 「$file」にはコピーするファイルのパスとファイル名を指定します。
  • 「$copied_file」は、コピーされたファイルのパスと名前を指定します。

以下のコードは実装を示しています。

<?php
copy('my_settings.txt', 'my_settings_backup.txt') or die("Could not copy file");
echo "File successfully copied to 2";
?>

ファイルの削除

unlink関数はファイルを削除するために使用されます。以下のコードはその実装例を示しています。

<?php
if (!unlink('my_settings_backup.txt'))
{
echo "Could not delete file";
}
else
{
echo "File 1 successfully deleted";
}
?>

PHP file_get_contents()関数

file_get_contents 関数は、ファイルの内容全体を読み取るために使用されます。

file_get_contentsとfgetsの違いは、file_get_contentsがファイルデータを文字列として返すのに対し、fgetsはファイルを1行ずつ読み込む点です。

以下のコードは実装を示しています。

<?php
echo "<pre>"; // Enables display of line feeds
echo file_get_contents("my_settings.txt");
echo "</pre>"; // Terminates pre tag
?>

PHPファイル関数クイックリファレンス

以下の表は、このチュートリアルで取り上げるファイル機能をまとめたものです。

演算 詳細説明
ファイルが存在しています ファイルが存在するかどうかを判断するために使用されます
フォペン ファイルを開くために使用されます。 開いたファイルへのポインタを返します
書き込み ファイルへの書き込みに使用されます
閉じる 開いているファイルを閉じるために使用します
fgets ファイルを XNUMX 行ずつ読み取るために使用されます
copy 既存のファイルをコピーするために使用されます
リンク解除 既存のファイルを削除するために使用されます
file_get_contents ファイルの内容を文字列として返すために使用されます

よくあるご質問

fgetsは呼び出しごとに1行を読み込み、freadは開いているハンドルから指定されたバイト数を読み込み、file_get_contentsはfopenやfcloseを必要とせずに、1回の呼び出しでファイル全体を文字列に読み込みます。

fwriteは開いているファイルハンドルに書き込みを行うため、fopenとfcloseが必要です。一方、file_put_contentsはファイルのオープン、書き込み、クローズを1回の呼び出しで行うため、単純な書き込みにはより短い選択肢となります。

書き込み前にis_writable('file.txt')を使用して書き込み権限をテストし、file_exists()を使用してファイルが存在することを確認します。Unixシステムでは、Webサーバーがファイルの所有者である場合、chmod()を使用して権限を調整できます。

はい。CSV、JSON、ログレイアウトなどのフォーマットを指定すれば、AIがfgetcsv、json_decode、またはカスタムループを使用したコードと、欠落ファイルや不正なファイルに対するエラー処理を生成できます。実際のデータでテストしてください。

はい。パスとエラーを共有していただければ、AIが間違った相対パス、ファイルの欠落、または権限の問題を特定し、絶対パスの使用、ファイルの作成、または権限の調整を提案します。