PHPでファイルを読み込む
file_get_contentsとfopen/freadを使ってファイルの内容を読み込みます
「PHPでファイルを読み込む」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。
PHPとファイルシステム
PHP では、サーバーのファイルシステム上のファイルを読み込み、書き込み、管理できます。読み込みに使用する主な関数は次のとおりです。
file_get_contents()— ファイル全体を文字列として読み込むfopen()+fread()— ストリームベースで読み込むfile()— ファイルを行の配列として読み込む
file_get_contents()
ファイル全体の内容を文字列に読み込む最も簡単な方法です。
<?php
$content = file_get_contents('/var/www/html/data.txt');
if ($content === false) {
echo 'Could not read file';
} else {
echo $content;
echo strlen($content) . ' bytes';
}ファイルの存在確認
エラーを避けるため、読み込む前に必ず確認します。
<?php
$path = '/var/data/config.json';
if (!file_exists($path)) {
die('Config file not found');
}
if (!is_readable($path)) {
die('No permission to read file');
}
$json = file_get_contents($path);
$config = json_decode($json, true);file() — 配列への読み込み
file() はファイルを読み込み、各行を配列の要素として返します。
<?php
$lines = file('data.csv', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $lineNum => $line) {
echo ($lineNum + 1) . ': ' . $line . PHP_EOL;
}fopen、fread、fclose
大きなファイル向けの低レベルなストリーム読み込みです。すべてをメモリに読み込まずに処理できます。
<?php
$handle = fopen('large_file.txt', 'r');
if ($handle === false) die('Cannot open file');
// Read 1KB at a time
while (!feof($handle)) {
$chunk = fread($handle, 1024);
echo $chunk;
}
fclose($handle);fgets による1行ずつの読み込み
fgets() は一度に 1 行ずつ読み込むため、大きなファイルでもメモリ効率よく処理できます。
<?php
$handle = fopen('server.log', 'r');
while (($line = fgets($handle)) !== false) {
if (str_contains($line, 'ERROR')) {
echo 'Found error: ' . $line;
}
}
fclose($handle);リモートファイルの読み込み
allow_url_fopen が有効になっていれば、file_get_contents() で HTTP URL から読み込むこともできます。
<?php
$json = file_get_contents('https://api.example.com/data.json');
// Prefer cURL for more control and error handling
$ch = curl_init('https://api.example.com/data.json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);SplFileObject
SplFileObject はファイル操作のためのオブジェクト指向インターフェースを提供します。
<?php
$file = new SplFileObject('data.txt', 'r');
foreach ($file as $lineNum => $line) {
echo $lineNum . ': ' . $line;
}
// Read specific line:
$file->seek(5);
echo $file->current(); // line 6 (0-indexed)JSONファイルの読み込み
よく使われる方法として、JSON 設定ファイルを読み込んでデコードします。
<?php
function loadJsonConfig(string $path): array {
if (!file_exists($path)) {
throw new RuntimeException("Config not found: $path");
}
$json = file_get_contents($path);
$data = json_decode($json, true);
if (json_last_error() !== JSON_ERROR_NONE) {
throw new RuntimeException('Invalid JSON: ' . json_last_error_msg());
}
return $data;
}
$cfg = loadJsonConfig('/app/config.json');ファイル情報
ファイルの内容を読み込まずに、ファイルのメタデータを取得します。
<?php
$path = '/var/www/html/image.jpg';
echo filesize($path); // bytes
echo filetype($path); // 'file'
echo filemtime($path); // last modified timestamp
echo date('Y-m-d', filemtime($path));
$info = pathinfo($path);
echo $info['dirname']; // /var/www/html
echo $info['basename']; // image.jpg
echo $info['extension']; // jpgファイルのロック
同時書き込みによる競合を防ぐため、ファイルロックを使用します。
<?php
$handle = fopen('counter.txt', 'r+');
if (flock($handle, LOCK_EX)) { // exclusive lock
$count = (int) fread($handle, 20);
$count++;
fseek($handle, 0);
fwrite($handle, $count);
fflush($handle);
flock($handle, LOCK_UN); // release
}
fclose($handle);確認問題
ファイル全体を 1 回の呼び出しで文字列に読み込む PHP 関数はどれですか。
まとめ: ファイルの読み込み
ファイル読み込みの基本:
file_get_contents()— ファイル全体を文字列として読み込むfile()— ファイルを行の配列として読み込むfopen/fread/fclose— 大きなファイル向けのストリームfgets()— ストリームから 1 行ずつ読み込む- 最初に必ず file_exists と is_readable を確認する
- 同時アクセスの安全性を確保するため flock を使用する
よくある質問
「PHPでファイルを読み込む」レッスンは無料ですか?
はい。「PHPでファイルを読み込む」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。
「PHPでファイルを読み込む」で何を学びますか?
file_get_contentsとfopen/freadを使ってファイルの内容を読み込みます ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
PHP Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「PHPでファイルを読み込む」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPHP Academyレッスンでコードを書いて実行できますか?
はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- PHPでファイルを読み込む
- ファイルへの書き込みと追記
- ディレクトリを操作する
- ファイルアップロードの処理