使用遠端檔案

使用遠端檔案

只要在 php.ini 檔案中啟用了 allow_url_fopen 選項,就可以在大多數需要用檔名作為參數的函式中使用 HTTPFTP 的 URL 來代替檔名。同時,也可以在 includeinclude_oncerequirerequire_once 語句中使用 URL。PHP 所支援協議的更多資訊參見支援的協議和封裝協議

注意:

要在 PHP 4.0.3 及其更早的版本中使用 URL 封裝協議,需要在編譯時用 --enable-url-fopen-wrapper 參數來配置 PHP。

注意:

Windows 版本的 PHP 4.3 版之前不支援以下函式的遠端訪問:includeinclude_oncerequirerequire_once 以及GD 和影象處理 函式中的 imagecreatefromXXX 函式。

例如,可以用以下範例來打開遠端 web 伺服器上的檔案,解析需要的輸出數據,然後將這些數據用在數據庫的檢索中,或者簡單地以和自己網站其它頁面相同的風格輸出其內容。

示例 #1 獲取遠端檔案的標題

<?php
$file 
fopen ("http://www.example.com/""r");
if (!
$file) {
    echo 
"<p>Unable to open remote file.\n";
    exit;
}
while (!
feof ($file)) {
    
$line fgets ($file1024);
    
/* 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:[email protected]/path/to/file」(也可以在通過需要 Basic 認證的 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() 函式。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *