PHP マニュアル
前のページ |  | 次のページ

# 第 19 章 リモートファイルの使用

php.iniで`allow_url_fopen`を有効にした場合、 パラメータとしてファイル名をとる関数の多くでHTTPおよびFTPのURL を使用することができます。加えて、include(), include_once(), require(), require_once() 命令でURLを使用することができます。

> 注意 PHP 4.0.3以前のバージョンにおいては、URLラッパーを使用するために、 configureオプション `--enable-url-fopen-wrapper` を使用してPHPをconfigureを行なう必要があります。

> 注意 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);
      /* タイトルとタグが同じ行にある場合のみ動作します。 */
      if (eregi("<title>(.*)</title>", $line, $out)) {
        $title = $out[1];
        break;
      }
    }
    fclose($file);
    ?>

(正しいアクセス権限を有するユーザとして接続した場合には) FTPサーバにファイルを書き込むこともできます。 この方法では、新規ファイルを作成することのみができます。 既存のファイルを上書きしようとした場合には、 fopen()の処理は失敗します。

'anonymous'以外のユーザーで接続を行う場合、URLの中で 'ftp://user:password@ftp.example.com/path/to/file' のように ユーザー名(そして多分パスワードも)指定する必要があります。 (Basic認証を要求された際にHTTP経由でファイルをアクセスする場合と 同じ種類の構文を使用することができます。)

例 19-2リモートサーバーにデータを保存する

    <?php
    $file = fopen ("ftp://ftp.example.com/incoming/outputfile", "w");
    if (!$file) {
        echo "<p>Unable to open remote file for writing.\n";
        exit;
    }
    /* データをここに書きます。 */
    fputs ($file, $_SERVER['HTTP_USER_AGENT'] . "\n");
    fclose ($file);
    ?>

> 注意 上の例からリモートログに書きこむためにこの手法を使用することを考えるかも しれません。 Unfortunately that would not work because the fopen() call will fail if the remote file already exists. 分散ロギングのようなことを行うには、 syslog() の使用を考えてみて下さい。

前のページ | ホーム | 次のページ
PUT メソッドのサポート | 上に戻る | 接続処理