allow_url_fopen オプションが php.ini ファイルで有効になっている限り、パラメータとしてファイル名を必要とするほとんどの関数で、ファイル名の代わりに HTTP および FTP URL を使用できます。同時に、URL は include、include_once、require、require_once ステートメントでも使用できます。 PHP でサポートされるプロトコルの詳細については、「サポートされるプロトコルとカプセル化されたプロトコル」を参照してください。
注:
PHP 4.0.3 以前のバージョンで URL ラッピング プロトコルを使用するには、コンパイル時に --enable-url-fopen-wrapper パラメーターを使用して PHP を設定する必要があります。
バージョン 4.3 より前の Windows バージョンの PHP は、次の関数のリモート アクセスをサポートしていません: include、include_once、require、require_once、および GD および Image 関数の imagecreatefromXXX 関数。
たとえば、次の例を使用して、リモート Web サーバー上のファイルを開き、必要な出力データを解析して、このデータをデータベースの取得に使用したり、単にそのコンテンツを Web サーバー上の他のページと同じスタイルで出力したりすることができます。自分のウェブサイト。
例 #1 リモート ファイルのタイトルを取得する
<?php $file = fopen ("/", "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 サーバーとのリンクを確立している場合は、FTP サーバー上のファイルに書き込むこともできます。このメソッドは、新しいファイルを作成する場合にのみ使用できます。既存のファイルを上書きしようとすると、fopen() 関数の呼び出しは失敗します。
「anonymous」以外のユーザー名でサーバーに接続するには、「ftp://user:password@ftp.example.com/path/to/file」のようにユーザー名 (および場合によってはパスワード) を指定する必要があります。 (基本認証を必要とする HTTP プロトコル経由でリモート ファイルにアクセスするときにも同じ構文を使用できます)。
例 #2 リモート サーバーにデータを保存する
<?php $file = fopen ("ftp://ftp.example.com/incoming/outputfile", "w"); if (!$file) { echo "<p>Unable to open remote file for writing.\n"; exit; } /* Write the data here. */ fwrite ($file, $_SERVER['HTTP_USER_AGENT'] . "\n"); fclose ($file); ?>
注:
上記の例からインスピレーションを得て、このテクノロジーを使用してリモート ログ ファイルを保存することもできます。ただし、上で述べたように、fopen() で開かれた URL では、新しいファイルのみを書き込むことができます。リモート ファイルがすでに存在する場合、fopen() 関数の操作は失敗します。分散ログと同様のことを行うには、syslog() 関数を参照できます。