只要在 php.ini 中啟用 allow_url_fopen,您就可以在大部分接受檔名作為參數的函式中使用 HTTP 和 FTP URL。此外,URL 也可用於 include、include_once、require 和 require_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()。