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