php使用遠端HTTP檔案及FTP檔案操作

伊谢尔伦
發布: 2016-11-22 10:25:44
原創
1576 人瀏覽過

只要在 php.ini 檔案中啟動了 allow_url_fopen 選項,就可以在大多數需要以檔案名稱為參數的函數中使用 HTTP 和 FTP 的 URL 來取代檔案名稱。同時,也可以在 include、include_once、 require 及 require_once 語句中使用 URL。 PHP 所支援協議的更多資訊請參閱支援的協議和封裝協議。

注意:

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

Windows 版本的 PHP 4.3 版之前不支援以下函數的遠端存取: include, include_once, require, require_once 以及GD and Image 函數中的 imagecreatefromXXX 函數。

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

Example #1 獲取遠端檔案的標題

<?php
    $file = fopen ("/", "r");
    if (!$file) {
        echo "<p>Unable to open remote file.\n";
        exit;
    }
    while (!feof ($file)) {
        $line = fgets ($file, 1024);
        /* 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:password@ftp.example.com/path/to/file」(也可以在透過需要Basic 認證的HTTP 協定存取遠端檔案時使用相同的語法)。

Example #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[&#39;HTTP_USER_AGENT&#39;] . "\n");
    fclose ($file);
?>
登入後複製

注意:

或許可以從上述範例中得到啟發,用該技術來儲存遠端日誌檔案。但如上所提到的,在用 fopen() 方式開啟的 URL 中,只能對新檔案進行寫入操作。如果遠端檔案已經存在則 fopen() 函數的操作將會失敗。要做類似分散式日誌的事,可以參考 syslog() 函數。


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!