《PHP8上級試験対策》file_put_contents と file_get_contents のURL指定挙動を解説

  • URLをコピーしました!

はじめに

PHP上級試験対策をしていると、ファイル操作関数に URL を渡した場合の挙動が問われることがあります。一見「ローカルファイルに書き込み/読み込みを行うだけ」と思いがちですが、実は HTTP ストリームラッパー が働いて少し特殊な動きをします。
今回は模擬試験コードをもとに、この挙動を整理してみます。

キーワード:file_put_contents / file_get_contents / HTTPラッパー /

目次

サンプルコード

<?php
declare(strict_types=1);
error_reporting(-1);

$url = 'http://example.com/sample.txt';
file_put_contents($url,'exam text');

var_dump(file_get_contents($url));

コードの意味

file_put_contents($url, ‘exam text’);

通常はローカルファイルへ書き込みますが、URLを指定すると HTTP PUT リクエスト が送信されます。
ただし多くのサーバーでは PUT を受け付けないため、ほとんどの場合は警告が発生して失敗します。

file_get_contents($url);

URLを指定した場合は HTTP GET リクエスト でデータを取得します。
ここでは http://example.com/sample.txt にアクセスしますが、そのファイルが存在しないため、戻り値は false となります。

実際の出力例

Warning: file_put_contents(http://example.com/sample.txt): failed to open stream: ...
bool(false)

まとめ

  • file_get_contents("http://...")GETリクエストで取得可能
  • file_put_contents("http://...")PUTリクエストを試みるが、通常は失敗
  • 本コードでは警告が出て、結果は bool(false)

試験対策として「URLを指定した場合はHTTPリクエスト扱いになる」ことを覚えておくと安心です。

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次