0Pricing
PHP Academy · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. PHPでファイルを読み込む
  2. ファイルへの書き込みと追記
  3. ディレクトリを操作する
  4. ファイルアップロードの処理
← PHP Academyに戻る