PHPを設定する際に "URL fopen wrapper" に関するサポートを有効にした場合 (つまり、--disable-url-fopen-wrapper フラグを configure に 明示的に渡した場合を除いて)、 require および include 文を 含むファイル名をパラメータとして受ける多くの関数 においてHTTPおよびFTP URLを使用することができます。
注意: Windows上では、リモートファイルに include および require 文を使用することはできません。
例えば、リモートWebサーバーにファイルをオープンし、 データを出力、データベースクエリーに使用するか、単にWebサイトのスタイルに合わせて 出力を行うことが可能です。
例 19-1. リモートページのタイトルを得ます
<?php $file = fopen("http://www.php.net/", "r"); if (!$file) { echo "<p>Unable to open remote file.\n"; exit; } while (!feof($file)) { $line = fgets($file, 1024); /* This only works if the title and its tags are on one line. */ if (eregi("<title>(.*)</title>", $line, $out)) { $title = $out[1]; break; } } fclose($file); ?>
適当なアクセス権を持ったユーザーで接続を行い、書きこもうとするファイルがまだ 存在しない場合、FTPでファイルを書きこむことも可能です。 'anonymous'以外のユーザーで接続を行う場合、URLの中で 'ftp://user:password@ftp.example.com/path/to/file' のように ユーザー名(そして多分パスワードも)指定する必要があります。 (Basic認証を要求された際にHTTP経由でファイルをアクセスする場合と 同じ種類の構文を使用することができます。)
例 19-2. リモートサーバーにデータを保存する
<?php $file = fopen("ftp://ftp.php.net/incoming/outputfile", "w"); if (!$file) { echo "<p>Unable to open remote file for writing.\n"; exit; } /* Write the data here. */ fputs($file, "$HTTP_USER_AGENT\n"); fclose($file); ?>
注意: 上の例からリモートログに書きこむためにこの手法を使用することを考えるかも しれません。 しかし、上に述べたように、URL fopen() ラッパーを使って書きこめるのは 新規のファイルのみです。 ログのようなことを行うには、 syslog の使用を考えてみて下さい。