Symfony文件系统操作核心是Filesystem类,提供mkdir、copy、rename、remove、exists、mirror等方法,支持跨平台路径处理、递归操作、权限管理及异常安全机制。

Symfony 文件系统操作核心就一个类:Filesystem,它把常见文件任务封装得既安全又简洁,不用手动写 fopen、mkdir -p 或处理 Windows/Linux 路径差异。
安装与初始化
用 Composer 一行搞定:
composer require symfony/filesystem
在代码里引入并创建实例:
use Symfony\Component\Filesystem\Filesystem; $fs = new Filesystem();
自动加载由 Composer 管理,无需额外配置 —— 只要项目有 vendor/autoload.php 就能用。
常用文件与目录操作
这些方法都支持单个路径或路径数组,多数会自动递归处理(比如 mkdir 创建多层目录):
-
创建目录:自动建好所有中间层级
$fs->mkdir('/var/www/app/cache'); -
复制文件:默认只覆盖更旧的目标,加
true强制覆盖$fs->copy('config.yaml', 'config_backup.yaml', true); -
移动/重命名:跨分区也安全,支持覆盖
$fs->rename('temp.log', 'logs/app_20260511.log', true); -
删除文件或目录:递归删除整个目录树
$fs->remove(['old_assets/', 'tmp/*.tmp']); -
检查存在性:统一接口判断文件、目录、符号链接
if ($fs->exists('/etc/passwd')) { ... }
高级同步:mirror() 目录镜像
这是部署和资源同步最实用的功能,相当于 rsync 的轻量版:
- 完整同步源目录结构到目标目录(目标不存在则自动创建)
- 默认只新增/更新,不删目标多余内容;加
['delete' => true]启用“精准镜像”$fs->mirror('src/public', '/var/www/html', null, ['delete' => true]); - 可配合 Finder 过滤器跳过某些文件(如
.git、node_modules)
权限与所有权管理
避免 shell 命令拼接风险,用原生 PHP 权限控制:
-
设权限:支持递归
$fs->chmod('/var/log/app', 0644, 0000, true); -
改所有者:传用户名或 UID
$fs->chown('/var/www', 'www-data', true); -
改所属组
$fs->chgrp('/var/www', 'www-data', true);
所有操作都内置异常捕获(如 IOExceptionInterface),建议用 try/catch 包裹关键步骤。


















