Fungsi fopen() PHP
Definisi dan penggunaan
Fungsi fopen() membuka fail atau URL.
Jika gagal membuka, fungsi ini akan kembali FALSE.
Syarat
fopen(filename,mode,include_path,context)
Parameter | Deskripsi |
---|---|
filename | Diperlukan. Tentukan fail atau URL yang hendak dibuka. |
mode | Diperlukan. Tentukan jenis akses yang diminta kepada fail/alaran. Nilai yang mungkin lihat dalam jadwal di bawah. |
include_path | Pilihan. Jika perlu mencari fail di dalam include_path, dapatkan parameter ini diatur kepada 1 atau TRUE. |
context | Pilihan. Tentukan persekitaran penanganan fail. Context adalah sekumpulan pilihan yang boleh mengubah tingkah laku aliran. |
Nilai yang mungkin bagi parameter mode
mode | 說明 |
---|---|
"r" | Buka fail dalam modus baca sahaja, arah pengecam fail ke permulaan fail. |
"r+" | Buka fail dalam modus baca dan tulis, arah pengecam fail ke permulaan fail. |
"w" | Buka fail dalam modus tulis, arah pengecam fail ke permulaan fail dan saiz fail disingkat kepada nol. Jika fail tidak wujud, cuba untuk membuatnya. |
"w+" | Buka fail dalam modus baca dan tulis, arah pengecam fail ke permulaan fail dan saiz fail disingkat kepada nol. Jika fail tidak wujud, cuba untuk membuatnya. |
"a" | Buka fail dalam modus tulis, arah pengecam fail ke akhir fail. Jika fail tidak wujud, cuba untuk membuatnya. |
"a+" | Buka fail dalam modus baca dan tulis, arah pengecam fail ke akhir fail. Jika fail tidak wujud, cuba untuk membuatnya. |
"x" |
Membuat dan buka fail dalam modus tulis, arah pengecam fail ke permulaan fail. Jika fail sudah wujud, panggilan fopen() akan gagal dan kembali FALSE, dan akan menghasilkan satu pemberitahuan tahap 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 以及以後的版本所支持,僅能用於本地文件。 |
說明
fopen() 將 filename 指定的名字資源綁定到一個流上。如果 filename 是 "scheme://...如果以 "" 的格式,則被當成一個 URL,PHP 將搜索協議處理器(也稱為封裝協議)來處理此模式。如果該協議尚未註冊為封裝協議,PHP 將發出一條消息來幫助檢查腳本中潛在的問題並將 filename 繼續執行成一個普通的文件名。
如果 PHP 認為 filename 指定的是一個本地文件,將嘗試在該文件上打開一個流。該文件必須是 PHP 可以訪問的,因此需要確認文件訪問權限允許這種訪問。如果啟用了安全模式或者 open_basedir 則會應用進一步的限制。
如果 PHP 認為 filename 指定的是一個已註冊的協議,而該協議被註冊為一個網絡 URL,PHP 將檢查並確認 allow_url_fopen 已經被激活。如果關閉了,PHP 將發出一條警告,而 fopen 的調用則失敗。
對 context 的支援是在 PHP 5.0.0 添加的。
提示和註釋
Keterangan:不同的操作系統家族具有不同的行結束習慣。當寫入一個文本文件並想插入一個新行時,需要使用符合操作系統的行結束符號。基於 Unix 的系統使用 \n 作為行結束字符,基於 Windows 的系統使用 \r\n 作為行結束字符,基於 Macintosh 的系統使用 \r 作為行結束字符。 如果寫入文件時使用了錯誤的行結束符號,則其他應用程序打開這些文件時可能會表現得非常奇怪。
Windows 下提供了一個文本轉換標記("t")可以將 \n 透明地轉換為 \r\n。與此對應還可以使用 "b" 來強制使用二進制模式,這樣就不會轉換數據。要使用這些標記,必須使用 "b" 或者使用 "t" 作為 mode 參數的最後一個字符。
Moda pengubahsuaian baku bergantung kepada SAPI dan versi PHP yang digunakan, oleh kerana itu untuk keportabiliti, disarankan untuk selalu menentukan tanda yang betul. Jika mengoperasikan fail teks penuh dan menggunakan \n sebagai penanda akhir baris di skrip, tetapi masih mengharapkan fail ini dapat dibaca oleh aplikasi lain seperti Notepad, gunakan "t" dalam mode. Dalam semua keadaan lain, gunakan "b".
Pada operasi fail binari, jika tidak disifatkan "b" tanda, mungkin akan mendapati beberapa masalah aneh, termasuk fail gambar rosak serta masalah aneh tentang kharakter \r\n.
Keterangan:Untuk keportabiliti, disarankan kuat untuk selalu menggunakan tanda "b" semasa membuka fail dengan fopen().
Keterangan:Sekali lagi, untuk keportabiliti, disarankan kuat untuk mengulangi kod yang menggantung "t" mode untuk menggunakan penanda akhir baris yang betul dan diubah ke mode "b".
Contoh
<?php $file = fopen("test.txt","r"); $file = fopen("/home/test/test.txt","r"); $file = fopen("/home/test/test.gif","wb"); $file = fopen("http://www.example.com/","r"); $file = fopen("ftp://user:password@example.com/test.txt","w"); ?>