ホームページ  >  記事  >  php教程  >  PHP の fopen() 関数を使用してリモート ファイルにアクセスする例

PHP の fopen() 関数を使用してリモート ファイルにアクセスする例

高洛峰
高洛峰オリジナル
2016-12-21 15:50:571890ブラウズ

PHP を使用すると、ユーザーはブラウザーを通じてサーバー側のファイルにアクセスできるだけでなく、HTTP や FTP などのプロトコルを通じて他のサーバーのファイルにアクセスすることもでき、パラメータとしてファイル名を必要とするほとんどの関数で HTTP および FTP URL を代わりに使用できます。ファイル名。 fopen() 関数を使用して、指定されたファイル名とリソースをストリームにバインドします。ファイル名が「scheme://...」の形式である場合、それは URL として扱われ、PHP はそのファイル名を検索します。このモードを処理するプロトコル プロセッサ (カプセル化プロトコルとも呼ばれます)。

ファイルにリモートでアクセスする必要がある場合は、PHP 設定ファイルの「allow_url_fopen」オプションを有効にして、fopen() 関数を使用してリモート ファイルを開く必要があります。他のサーバーのファイルにアクセス許可があるかどうかも確認する必要があります。HTTP プロトコルを使用してリモート ファイルに接続する場合、そのファイルは「読み取り専用」モードでのみ開くことができます。アクセスする必要があるリモート FTP サーバーで、指定されたユーザーに対して「書き込み許可」が有効になっている場合、FTP プロトコルを使用してリモート ファイルに接続するときに、「書き込み専用」または「読み取り専用」モードを使用できます。ただし、「読み取り可能および書き込み可能」モードは使用できません。

PHP を使用してリモート ファイルにアクセスすることは、リモート Web サーバー上のファイルにアクセスすることと同じです。出力データはデータベースの取得に使用することも、Web サイトの残りの部分のスタイル マッチングに出力することもできます。

<?php
//通过http打开远程文件
$file = fopen(http://www.php.cn, "r") or die("打开远程文件失败!!");
while (!feof($file)){
    $line = fgets($file,1024);     //每读取一行
//如果找到远程文件中的标题标记则取出标题,并退出循环,不在读取文件
    if (preg_match("/<titile>(.*/)<\/title>",$line,$out)){     //使用正则匹配标题标记
        $title = $out[1];     //将标题标记中的标题字符取出
        break;     //退出循环,结束远程文件读取
    }
}
 
fclose($file);
echo $title;
?>

合法的なアクセス権がある場合は、ユーザーの ID によって FTP サーバーとの接続が確立されるため、このテクノロジーを使用してリモート ログ ファイルを保存できますが、この方法は既存のファイルを上書きする場合にのみ使用できます。 fopen() 関数の呼び出しは失敗するため、匿名以外のユーザー名でサーバーに接続する必要があり、「ftp://user:password@」のようにユーザー名 (またはパスワード) を指定する必要があります。 .ftp.lampbrother.net/path/to/file"。コードは次のとおりです。

<?php
    //在ftp.lampbrother.net的远程服务器上创建文件,以写的模式打开
    file = fopen("ftp://user:password@ftp.lapbrother.net/path/to/file", "w");
    //将一个字符串写入到远程文件中去
    fwrite($file, "Linux+Apache+MySQL+PHP");
 
    fclose($file);
?>

リモート ホストにアクセスする際のタイムアウト エラーを回避するために、set_time_limit() 関数を使用して、

PHP の fopen() 関数を使用したリモート ファイルへのアクセスに関する関連記事については、PHP 中国語 Web サイトに注目してください

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。