PHP - 開啟檔案



PHP 的內建函式庫提供了 fopen() 函式來開啟檔案或任何其他流,並返回其“引用指標”,也稱為“控制代碼”。

PHP 中的 fopen() 函式類似於 C 中的 fopen(),除了在 C 中,它不能開啟 URL。

fopen() 的語法

fopen() 函式具有以下簽名:

fopen(
   string $filename,
   string $mode,
   bool $use_include_path = false,
   ?resource $context = null
): resource|false

$filename$mode 引數是必需的。以下是引數的說明:

  • $filename - 此引數是一個字串,表示要開啟的資源。它可以是本地檔案系統中的檔案,也可以是在遠端伺服器上帶有 scheme:// 字首的檔案。

  • $mode - 一個字串,表示授予檔案/資源的訪問型別。

  • $use_include_path - 一個布林可選引數,如果要也在 include_path 中搜索檔案,則可以將其設定為 '1' 或 true。

  • $context - 一個上下文流資源。

開啟檔案的模式

PHP 允許以以下模式開啟檔案:

模式 描述
r 只讀開啟檔案。
w 只寫開啟檔案。即使檔案存在也會建立一個新檔案。
a 以追加模式開啟檔案
x 建立一個新的只寫檔案。
r+ 以讀/寫模式開啟檔案。
w+ 以讀/寫模式開啟檔案。即使檔案存在也會建立一個新檔案。
a+ 以追加模式以讀/寫模式開啟檔案。
x+ 建立一個新的讀/寫檔案。
c 開啟檔案以寫入,如果它不存在。但是,如果它存在,則不會被截斷(如 w 模式)。
c++ 開啟檔案以讀/寫,如果它不存在。但是,如果它存在,則不會被截斷(如 w 模式)。
e 在開啟的檔案描述符上設定 close-on-exec 標誌。僅在 PHP 編譯在符合 POSIX.1-2008 的系統上可用。

如果 fopen() 函式成功執行,則它會返回一個與檔案流繫結的“檔案指標”或“控制代碼”資源。但是,如果失敗,則返回 false 併發出 E_WARNING。

$handle = fopen('a.txt, 'r');
var_dump($handle);

如果檔案存在於當前目錄中,則輸出會顯示成功:

resource(5) of type (stream)

否則,您會收到以下錯誤訊息

Warning: fopen(a.txt): Failed to open stream: 
No such file or directory in a.php on line 2
bool(false)

示例

以下示例顯示了 fopen() 函式的不同用法:

<?php
   $handle = fopen("hello.txt", "w");
   $handle = fopen("c:/xampp/htdocs/welcome.png", "rb");
   $handle = fopen("https:///hello.txt", "r");
?>

請注意,當檔名是目錄時,此函式也可能成功。在這種情況下,您可能需要使用is_dir()函式在執行任何讀/寫操作之前檢查它是否為檔案。

開啟檔案後,您可以使用fwrite()fputs()等函式在其中寫入資料,並使用fread()fgets()函式從中讀取資料。

關閉檔案

始終建議關閉控制代碼引用的開啟流:

fclose($handle);
廣告
© . All rights reserved.