PHPでファイル書き込みを行う方法:file_put_contents()

PHPでファイル書き込みを行う場合はfile_put_contents()を使うことで簡単にできます。

file_put_contents()の使い方

file_put_contents()の記述方法は以下のとおりです。

file_put_contents(ファイル名, 書き込みデータ [, オプションフラグ [, コンテキスト]])

この関数は書き込み成功時にはファイルに書き込まれたバイト数を、失敗時にはFALSEを返します。

オプションフラグ

file_put_contents()には3つオプションがあり、これらを第3引数に渡すことで設定できます。また、「|」演算子を使うことで複数のオプションを同時に設定できます。

FILE_USE_INCLUDE_PATH
ファイルをインクルードディレクトリから参照します。

FILE_APPEND
データを上書きではなくファイルに追記します。

LOCK_EX
書き込み中にファイルをロックし他の人が同時にファイル処理を行えないようにします。

ファイルに書き込む

以下は「Hello World!」の文字列を「sample.txt」というファイルに書き込む例です。

<?php
$data = "Hello World!\n";
file_put_contents("./sample.txt", $data);
?>

sample.txtの中身を表示すると「Hello World!」の文字列が書き込まれていることが確認できます。

$ cat sample.txt
Hello World!

ファイルに追記する

第3引数にFILE_APPENDのオプションを渡すことでファイルに追記することができます。さきほどの「sample.txt」に以下のプログラムでもう一度ファイルに書き込んでみます。

?<php
$data = "Hello World!\n";
file_put_contents("./sample.txt", $data, FILE_APPEND);
?>

上のプログラムの実行後にファイルを表示すると2行目に「Hello World!」が追加されているのが確認できます。

$ cat sample.txt 
Hello World!
Hello World!

ファイル書き込みの成功・失敗を表示

以下のプログラムはファイルの書き込みに成功したか失敗したかを実行時に表示する例です。

<?php
$data = "Hello World!\n";
$result = file_put_contents("sample.txt", $data, LOCK_EX);
if ( $result === 0 ) {
    echo "書き込み失敗\n";
} else {
    echo "書き込み成功:" . $result . " Byte\n";
}
?>

上のプログラムを実行すると成功時には書き込んだ文字列のバイト数が表示され、失敗時には「書き込み失敗」と表示されます。

書き込み成功:13 Byte

イベント