PHP ファイルの作成 / 書き込み
1. PHP fopen() - ファイルを作成する
fopen() 関数は、ファイルのオープンだけでなく、新規作成にも使用されます。少し紛らわしいかもしれませんが、PHP ではファイルを開くときと同じ関数を使用してファイルを作成します。
存在しないファイルに対して fopen() を使用した場合、そのファイルが「書き込み(w)」または「追記(a)」モードで開かれていれば、関数は自動的にファイルを新規作成します。
以下の例では、PHP コードが存在するディレクトリに "testfile.txt" という名前の新しいファイルを作成します。
コード例:
<?php
// 書き込みモードでファイルを作成
$myfile = fopen("testfile.txt", "w");
?>1.1 ファイルパーミッションについて
このコードを実行しようとした際にエラーが発生する場合は、PHP ファイルにハードドライブへの情報書き込み権限(パーミッション)が付与されているかを確認してください。
2. PHP fwrite() - ファイルに書き込む
fwrite() 関数は、ファイルへの書き込みを行うために使用されます。
fwrite() の第1引数には書き込み先となるファイル(ファイルポインタ)を、第2引数にはファイルに書き込む文字列を指定します。
以下の例では、"newfile.txt" という新しいファイルに2つの名前を書き込みます。
コード例:
<?php
// ファイルを書き込みモードで開く、失敗した場合はエラーを出力
$myfile = fopen("newfile.txt", "w") or die("ファイルを開けません!");
// 1つ目のデータを書き込む
$txt = "John Doe\n";
fwrite($myfile, $txt);
// 2つ目のデータを書き込む
$txt = "Jane Doe\n";
fwrite($myfile, $txt);
// ファイルを閉じる
fclose($myfile);
?>"newfile.txt" に対して2回書き込みを行った点に注目してください。書き込むたびに $txt という変数(最初は "John Doe"、2回目は "Jane Doe" を保持)を送信しています。書き込みが完了したら、fclose() 関数でファイルを閉じます。
作成された "newfile.txt" を開くと、以下のようになります。
John Doe
Jane Doe3. PHP の上書き(Overwriting)
"newfile.txt" に既にデータが含まれている状態で、既存のファイルを「書き込みモード(w)」で開いた場合に何が起こるかを確認しましょう。このモードでは、既存のデータはすべて 消去(ERASE) され、空のファイルとして処理が開始されます。
以下の例では、既存の "newfile.txt" を開き、新しいデータを書き込みます。
コード例:
<?php
$myfile = fopen("newfile.txt", "w") or die("ファイルを開けません!");
$txt = "Mickey Mouse\n";
fwrite($myfile, $txt);
$txt = "Minnie Mouse\n";
fwrite($myfile, $txt);
fclose($myfile);
?>この操作の後に "newfile.txt" を開くと、以前のデータ(John と Jane)は消滅しており、新しく書き込んだデータのみが存在します。
Mickey Mouse
Minnie Mouse4. テキストの追記(Append)
既存のデータはそのままで、末尾にデータを追加したい場合は「追記モード(a)」を使用します。w モードが古い内容を上書き・削除するのに対し、a モードはテキストをファイルの最後に追加します。
以下の例では、既存の "newfile.txt" を開き、テキストを追記します。
コード例:
<?php
// 追記モード (a) でファイルを開く
$myfile = fopen("newfile.txt", "a") or die("ファイルを開けません!");
$txt = "Donald Duck\n";
fwrite($myfile, $txt);
$txt = "Goofy Goof\n";
fwrite($myfile, $txt);
fclose($myfile);
?>"newfile.txt" を再度開くと、"Donald Duck" と "Goofy Goof" がファイルの最後に追加されていることがわかります。
Mickey Mouse
Minnie Mouse
Donald Duck
Goofy Goof