1.resource fopen(string $filename, string $mode [,bool $use_include_path [, resource $zcontext]])
函數功能:
fopen() 將 filename 指定的名字資源綁定到一個流上。如果filename 是 "scheme://..." 的格式,則被當成一個 URL,PHP 將搜尋協定處理器(也稱為封裝協定)來處理此模式。如果該協議尚未註冊封裝協議,PHP 將發出一則訊息來幫助檢查腳本中潛在的問題並將filename 當成一個普通的檔案名稱繼續執行下去。
如果 PHP 認為 filename 指定的是一個本機文件,將嘗試在該文件上開啟一個流。該檔案必須是 PHP 可以存取的,因此需要確認檔案存取權限允許該存取。如果啟動了安全模式或open_basedir 則會套用進一步的限制。
如果 PHP 認為 filename 指定的是已註冊的協議,而該協議被註冊為一個網路 URL,PHP 將檢查並確認allow_url_fopen 已被啟動。如果關閉了,PHP 將發出一個警告,而 fopen 的呼叫則失敗。
filename:規定要開啟的檔案或URL。
mode:規定要求到該檔案/流的存取類型。
include_path:可選,如果也需要在include_path中檢索檔案的話,可以將此參數設為1或TRUE。
context:可選,規定檔案句柄的環境,Context是可以修該流的行為的一套選項。
mode 參數的可能的值
mode 說明
"r" 只讀方式打開,將檔案指標指向檔案頭。
"r+" 讀寫方式打開,將文件指標指向文件頭。
"w" 寫入方式打開,將檔案指標指向檔案頭並將檔案大小截為零。如果文件不存在則嘗試建立之。
"w+" 讀寫方式打開,將檔案指標指向檔案頭並將檔案大小截為零。如果文件不存在則嘗試建立之。
"a" 寫入方式打開,將文件指標指向文件末端。如果文件不存在則嘗試建立之。
"a+" 讀寫方式打開,將文件指標指向文件末端。如果文件不存在則嘗試建立之。
"x"
建立並以寫入方式打開,將檔案指標指向檔案頭。如果檔案已存在,則 fopen() 呼叫失敗並傳回 FALSE,並產生一條 E_WARNING 層級的錯誤訊息。如果文件不存在則嘗試建立之。
這和給底層的 open(2) 系統呼叫指定 O_EXCL|O_CREAT 標記是等價的。
此選項由 PHP 4.3.2 以及以後的版本所支持,僅能用於本機檔案。
"x+"
建立並以讀取和寫入方式打開,將檔案指標指向檔案頭。如果檔案已存在,則 fopen() 呼叫失敗並傳回 FALSE,並產生一條 E_WARNING 層級的錯誤訊息。如果文件不存在則嘗試建立之。
這和給底層的 open(2) 系統呼叫指定 O_EXCL|O_CREAT 標記是等價的。
此選項由 PHP 4.3.2 以及以後的版本所支持,僅能用於本機檔案。
Note:
不同的作業系統家族有不同的行結束習慣。當寫入一個文字檔案並想插入一個新行時,需要使用符合作業系統的行結束符號。基於 Unix 的系統使用n 作為行結束字符,基於 Windows 的系統使用 rn 作為行結束字符,基於 Macintosh 的系統使用 r 作為行結束字符。
如果寫入檔案時使用了錯誤的行結束符號,則其它應用程式開啟這些檔案時可能會表現得很怪異。
Windows 下方提供了一個文字轉換標記('t')可以透明地將 n 轉換為 rn。與此對應也可以使用'b' 來強制使用二進位模式,這樣就不會轉換資料。要使用這些標記,要么用 'b' 或用 't' 作為 mode 參數的最後一個字元。
預設的轉換模式依賴 SAPI 和所使用的 PHP 版本,因此為了方便移植鼓勵總是指定適當的標記。如果是操作純文字檔案並在腳本中使用了n 作為行結束符,但也要期望這些檔案可以被其它應用程式例如 Notepad 讀取,則在 mode 中使用 't'。在所有其它情況下使用'b'。
在操作二進位檔案時如果沒有指定 'b' 標記,可能會碰到一些奇怪的問題,包括壞掉的圖片檔案以及關於 rn 字元的奇怪問題。
更多php開啟檔案fopen函數的使用說明相關文章請關注PHP中文網!