PHP fopen 函數

PHP fopen 函數可以用來開啟文件或 URL 內容,例如網頁根目錄底下的任何一個"可透過 fopen 開啟"的檔案或是外部資源的檔案,透過不同的開啟模式(fopen mode)套用到被開啟的檔案上,PHP 設計師可以輕易的修改檔案或利用檔案內容,不過 PHP fopen 的使用常常碰到伺服器權限設定的問題,也常常碰到不同作業系統的條件限制,使用時需要熟悉執行 PHP fopen 的工作環境較不容易出錯。

PHP fopen 函數語法規則
 resource fopen ( string $filename , string $mode , bool $use_include_path = false , resource $context )
由語法規則中可以看到 fopen 總共有四個參數可以使用,最重要的是前面兩個,其中 $filename 是用來設定要開起的檔案名稱或 URL,第二個參數 $mode 則是用來設定開啟模式,例如唯讀(r)、讀寫(r+)、寫入(w)... 等,這些模式關係到 fopen 打開的文件能被操作的程度,第三個參數 $use_include_path 與第四個參數 $context 為非必要項目,後續會說明。

當 PHP fopen 成功開啟一個檔案或 URL 會自動返回指針資源,若開啟失敗則返回 FALSE。

$filename - 指定要開啟的檔案或 URL,必須為 PHP 可開啟的權限與內容。

PHP fopen 函數常用模式表($mode)
模式
說明
'r'以閱讀模式開啟,指針指向文件開頭。
'r+'以讀寫模式開啟,指針指向文件開頭。
'w'以寫入模式開啟,指針指向文件開頭並將文件大小截為零。文件不存在時嘗試創建。
'w+'以讀寫模式開啟,指針指向文件開頭並將文件大小截為零。文件不存在時嘗試創建。
'a'以寫入模式開啟,指針指向文件尾端,如果文件不存在則嘗試創建。
'a+'以讀寫模式開啟,指針指向文件尾端,如果文件不存在則嘗試創建。
'x'創建並以寫入模式開啟,如果文件已經存在則 fopen 返回 false 並產生 E_WARNING 級別錯誤訊息
'x+'創建並以讀寫模式開啟,如果文件已經存在則 fopen 返回 false 並產生 E_WARNING 級別錯誤訊息
'c'以寫入模式打開文件,指針指向文件開頭,如果文件不存在,fopen 嘗試創建。
'c+'以讀寫模式打開文件,指針指向文件開頭,如果文件不存在,fopen 嘗試創建。
$use_include_path - 如果有必要在 include_path 中搜尋,可以將此參數設為 TRUE 或 1,預設為 FALSE,選用項目。

$context - PHP 5.0.0 新增功能,對上下文的支持。

PHP fopen 函數範例
<?php
$handle = fopen("/home/fopenbox/test.txt", "r");
$handle = fopen("/home/fopenbox/test.gif", "wb");
$handle = fopen("http://www.php.net", "r");
$handle = fopen("ftp://user:password@example.com/test.txt", "w");
?>
範例是常見的幾種 fopen 函數使用方式,第一行與第二行展示的都是開啟網頁根目錄的檔案,差別是採用何種模式開啟,第三行是開啟一個網頁內容,fopen 不只是可以開啟檔案,也可以開啟一的 URL 的內容,當然包含網頁內容,不過一般網頁都只能提供瀏覽者閱讀,所以我們的參數選用 "r",第四個則是以寫入模式開啟  FTP 上的一個檔案。以上就是 fopen 常見的用法,要注意檔案是否有開放讀取或寫入的權限,特別是要可以接受 fopen 的開啟,比較不會有錯誤的問題。

延伸閱讀
© Copyright wibibi.com 網頁設計教學百科 基礎的網頁設計規劃、資料庫與程式設計 Since 2012 Englsih version
PHP Smarty MySQL JQuery Apache W3C