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

PHP Filesystem 函數完整參考:檔案系統操作大全

     編輯:PHP 入門

PHP Filesystem 函數完整參考:檔案系統操作大全

簡介

Filesystem 函數提供豐富的檔案與目錄操作功能:開啟/關閉、讀寫、複製、移動、刪除、權限、鎖定、資訊查詢、路徑處理、臨時檔案、CSV 解析等。所有函數內建於 PHP 核心,無需安裝。


執行期設定 (php.ini)

指令預設值說明可變範圍
allow_url_fopen1允許 fopen 等函數使用 URL (PHP 4.0.4+)PHP_INI_SYSTEM
user_agentNULLPHP 發送的 User-Agent (PHP 4.3+)PHP_INI_ALL
default_socket_timeout60Socket 串流預設逾時秒數 (PHP 4.3+)PHP_INI_ALL
from""匿名 FTP 密碼 (您的 Email)PHP_INI_ALL
auto_detect_line_endings0自動偵測行尾結束符 (Unix/DOS/Mac) (PHP 4.3+)PHP_INI_ALL

跨平台路徑相容性

  • Unix:正斜線 / 為目錄分隔符。
  • Windows:/ 與 \ 皆可使用。
  • 建議統一使用 / 或使用 DIRECTORY_SEPARATOR 常數。

核心函數分類速查

函數說明
fopen() / fclose()開啟/關閉檔案或 URL 串流
fread() / fwrite() / fputs()讀取/寫入開啟的檔案
file_get_contents() / file_put_contents()一次性讀取/寫入整個檔案到字串
file()將檔案讀入陣列 (每行一個元素)
readfile()讀取檔案並直接輸出到緩衝區
fgets() / fgetc() / fgetss()讀取一行/一字元/一行並過濾 HTML/PHP 標籤
fgetcsv() / fputcsv()解析/寫入 CSV 格式
feof()檢查檔案指標是否到達 EOF
fseek() / ftell() / rewind()定位/取得當前位置/倒回開頭
ftruncate()截斷檔案到指定長度
fflush()刷新緩衝輸出
file_exists() / is_file() / is_dir() / is_link()檢查存在/是檔案/是目錄/是連結
is_readable() / is_writable() / is_executable()檢查可讀/可寫/可執行
is_uploaded_file() / move_uploaded_file()檢查/移動上傳檔案
filesize()取得檔案大小 (位元組)
filetype()取得檔案類型
fileperms()取得檔案權限
fileatime() / filemtime() / filectime()取得最後存取/修改/狀態變更時間
fileowner() / filegroup() / fileinode()取得擁有者/群組/inode
chmod() / chown() / chgrp()改變模式/擁有者/群組
mkdir() / rmdir()建立/刪除目錄
copy() / rename() / unlink()複製/重命名/刪除檔案
symlink() / readlink() / link()建立/讀取符號連結/建立硬連結
lstat() / stat() / fstat()取得檔案/連結/開啟檔案的詳細資訊
clearstatcache()清除檔案狀態快取
disk_free_space() / disk_total_space()取得目錄可用/總磁碟空間
realpath()返回規範化絕對路徑
pathinfo()解析路徑資訊 (dirname/basename/extension/filename)
basename() / dirname()取得檔名/目錄名
glob()依模式搜尋檔案/目錄
tempnam() / tmpfile()建立唯一臨時檔案/臨時檔案指標
touch()設定檔案存取與修改時間
umask()設定預設權限遮罩
flock()檔案鎖定/釋放 (共享/獨佔/非阻塞)
parse_ini_file() / parse_ini_string()解析 INI 設定檔/字串
popen() / pclose()開啟/關閉程序管道
fnmatch()依模式比對檔名或字串
set_file_buffer()設定開啟檔案的緩衝大小
realpath_cache_get() / realpath_cache_size()取得 realpath 快取條目/大小

常見操作範例

安全讀取檔案內容

<?php
$file = '/var/www/data/config.json';
if (is_readable($file)) {
    $content = file_get_contents($file);
    $data = json_decode($content, true);
    // 處理 $data
}
?>

原子性寫入 (避免部分寫入被讀取)

<?php
$tmp = tempnam(sys_get_temp_dir(), 'app_');
file_put_contents($tmp, $newContent);
rename($tmp, $targetFile); // 同一檔案系統下為原子操作
?>

目錄遞迴建立

<?php
mkdir('/var/www/data/cache', 0755, true); // recursive=true
?>

CSV 匯出

<?php
$fp = fopen('export.csv', 'w');
fputcsv($fp, ['ID', 'Name', 'Email']);
foreach ($users as $u) {
    fputcsv($fp, [$u->id, $u->name, $u->email]);
}
fclose($fp);
?>

效能與安全提示

  • 大檔案處理請使用串流 (fopen/fgets) 避免記憶體耗盡。
  • 使用者上傳檔案務必驗證 MIME、副檔名、檔案大小,並儲存於非公開目錄。
  • 路徑拼接請使用 realpath() 防止目錄遍歷攻擊。
  • 頻繁存取同一檔案資訊時,注意 clearstatcache() 避免快取過期資料。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved