PHPはWeb開発だけでなく、ローカルファイルの読み書きやCSV処理、ユーザーからのファイルアップロードにも対応しています。
本記事では、ファイルの読み書き(fopen, fread, fwrite)、CSVファイルの入出力、そしてファイルアップロードの基本について、すべて実用的なコード付きでわかりやすく解説します。

ファイルの読み書き(fopen, fread, fwrite)
PHPでは、fopenを使ってファイルを開き、fread/fwriteでデータを読み書きできます。
<?php
$filename = "sample.txt";
// ファイルに書き込む
$handle = fopen($filename, "w");
fwrite($handle, "これはPHPで書き込んだテキストです。");
fclose($handle);
// ファイルを読み込む
$handle = fopen($filename, "r");
$content = fread($handle, filesize($filename));
fclose($handle);
echo nl2br($content); // 改行をHTMLに変換して表示
?>
"w"
:書き込みモード(既存内容は上書き)"r"
:読み取りモード
CSVデータの読み込みと出力
<?php
$csvFile = "data.csv";
if (($handle = fopen($csvFile, "r")) !== false) {
while (($row = fgetcsv($handle)) !== false) {
echo implode(", ", $row) . "<br>";
}
fclose($handle);
}
?>
fgetcsv()
を使えば、1行ずつ配列として読み込めます。
CSVの出力(書き込み)
<?php
$data = [
["名前", "年齢", "メール"],
["佐藤", 30, "sato@example.com"],
["田中", 25, "tanaka@example.com"]
];
$csvFile = "output.csv";
$handle = fopen($csvFile, "w");
foreach ($data as $line) {
fputcsv($handle, $line);
}
fclose($handle);
echo "CSVファイルを出力しました。";
?>
fputcsv()
を使えば、配列を簡単にCSV形式で保存できます。
ファイルアップロード処理の基礎
PHPでは、ユーザーがアップロードしたファイルを受け取ることができます。
以下は、画像ファイルをuploadsディレクトリに保存する例です。
<!-- upload.php -->
<?php
$uploadDir = "uploads/";
$message = "";
if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_FILES["image"])) {
$file = $_FILES["image"];
$target = $uploadDir . basename($file["name"]);
if (move_uploaded_file($file["tmp_name"], $target)) {
$message = "ファイルをアップロードしました: " . htmlspecialchars($file["name"]);
} else {
$message = "アップロードに失敗しました。";
}
}
>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ファイルアップロード</title>
</head>
<body>
<h2>画像ファイルをアップロード</h2>
<?php if ($message) : >
<p><?= $message ?></p>
<?php endif;>
<form method="post" enctype="multipart/form-data">
<input type="file" name="image" accept="image/*"><br>
<input type="submit" value="アップロード">
</form>
</body>
</html>
注意:アップロード先の uploads/
フォルダには書き込み権限(パーミッション)が必要です(例:755や777)。
まとめ
今回は、PHPによるファイル操作の基本を一気に解説しました。
- fopen/fread/fwrite:テキストファイルの読み書き
- fgetcsv/fputcsv:CSVファイルの読み込み・出力
- $_FILES + move_uploaded_file():ファイルアップロード処理
これらの機能を使いこなせば、PHPでのデータ管理やユーザー投稿機能が大きく広がります。