首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP file_put_contents() 一站式文件寫入:整合 fopen、fwrite、fclose

     編輯:PHP 綜合知識

函數原型

int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

相當於依次呼叫 fopen()、fwrite()、fclose(),PHP 5.0+ 內建。

參數詳解

參數說明
filename文件路徑,不存在則自動建立(需目錄可寫)。
data要寫入的資料:字串、陣列(一維,相當於 join('', $array))、資源流(PHP 5.1+)。
flags位元組合:FILE_USE_INCLUDE_PATH、FILE_APPEND(追加)、LOCK_EX(獨佔鎖)。
context流上下文資源(如 FTP/HTTP 選項)。

基礎範例

<?php
$contents  = "這是使用 file_put_contents 寫入的內容";
$contents2 = ["這是使用", "file_put_contents", "命令寫入的內容"]; // 一維陣列

file_put_contents("html/cache.txt", $contents);
file_put_contents("html/cache2.txt", $contents2); // 自動 join('')
?>

注意:若文件名拼寫錯誤(如 caceh.txt),會在當前目錄建立新文件,原目標文件不變更。

進階用法

1. 追加模式 + 獨佔鎖(併發安全)

<?php
$log = date("Y-m-d H:i:s") . " - 用戶登入\n";
file_put_contents("logs/access.log", $log, FILE_APPEND | LOCK_EX);
?>

2. 從遠端流寫入(PHP 5.1+)

<?php
$src = fopen('https://example.com/image.jpg', 'r');
file_put_contents('local.jpg', $src); // 相當於 stream_copy_to_stream()
fclose($src);
?>

3. 使用上下文(如 FTP 上傳)

<?php
$opts = ['ftp' => ['overwrite' => true]];
$ctx = stream_context_create($opts);
file_put_contents('ftp://user:pass@server/path/file.txt', $data, 0, $ctx);
?>

對比:手動 fopen/fwrite/fclose vs file_put_contents()

維度手動三步file_put_contents()
代碼行數5-8 行1 行
錯誤處理需分別檢查每步返回值僅檢查最終返回值(false 失敗)
鎖機制需手動 flock()旗標 LOCK_EX 一步到位
資源流支援手動 stream_copy_to_stream()直接接受資源作為 $data
性能可控制緩衝大小內部優化,通常更快
適用場景複雜邏輯、分段寫入、需中間處理簡單整體寫入、日誌、快取、下載儲存

注意事項

  • data 不支援多維陣列,會觸發警告並只寫入 "Array"。
  • 返回值為寫入位元組數,失敗返回 false(需用 === false 判斷)。
  • 大文件建議分塊寫入或使用流複製,避免記憶體耗盡。
  • 文件名拼寫錯誤會靜默建立新文件,建議使用絕對路徑或檢查目錄。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved