2024 年日本 PHP 研討會

使用遠端檔案

只要在 php.ini 中啟用 allow_url_fopen,您就可以在大部分接受檔名作為參數的函式中使用 HTTPFTP URL。此外,URL 也可用於 includeinclude_oncerequirerequire_once 陳述式(這些陳述式必須啟用 allow_url_include)。有關 PHP 支援的協定的更多資訊,請參閱 支援的協定和包裝器

例如,您可以使用它來開啟遠端網路伺服器上的檔案,解析輸出以取得您想要的資料,然後在資料庫查詢中使用該資料,或者只是以符合您網站其餘部分的樣式輸出它。

範例 #1 取得遠端頁面的標題

<?php
$file
= fopen ("http://www.example.com/", "r");
if (!
$file) {
echo
"<p>無法開啟遠端檔案。\n";
exit;
}
while (!
feof ($file)) {
$line = fgets ($file, 1024);
/* 只有當標題及其標籤位於同一行時,這才有效 */
if (preg_match ("@\<title\>(.*)\</title\>@i", $line, $out)) {
$title = $out[1];
break;
}
}
fclose($file);
?>

您也可以寫入 FTP 伺服器上的檔案(前提是您已使用具有正確存取權限的使用者身分連線)。您只能使用此方法建立新檔案;如果您嘗試覆蓋已存在的檔案,fopen() 呼叫將會失敗。

要以非「匿名」的使用者身分連線,您需要在網址中指定使用者名稱(以及可能的密碼),例如「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>無法開啟遠端檔案以進行寫入。\n";
exit;
}
/* 在此處寫入資料。 */
fwrite ($file, $_SERVER['HTTP_USER_AGENT'] . "\n");
fclose ($file);
?>

注意事項:

您可能會從上面的範例中得到一個想法,認為您可以使用此技術寫入遠端日誌檔。遺憾的是,這行不通,因為如果遠端檔案已存在,fopen() 呼叫將會失敗。要執行像這樣的分散式記錄,您應該參考 syslog()

新增註釋

使用者貢獻的註釋

此頁面尚無使用者貢獻的註釋。
To Top