symfony/filesystem
Symfony Filesystem provides basic utilities for working with files and directories: creating, copying, moving, and removing files, dumping content safely, making paths relative, and normalizing paths. It's a lightweight, standalone component usable in any PHP project.
Emergency Security Patching (new — v5.4.54):
tempnam() files created with a suffix were not private — temporary files could be readable/writable by other users on the host.Support-Matrix Correction (affects buy-vs-build and roadmap):
Build vs. Buy Decision:
Dependency Hygiene / Supply-Chain Posture:
[SECURITY] in release notes, so patches don't rely on someone noticing.Adopt (or patch) immediately when:
composer.lock resolves symfony/filesystem 5.4.x < 5.4.54 — the temp-file privacy issue applies regardless of whether your code passes a suffix; transitive callers may.Avoid / deprioritize when:
Storage facade / Flysystem and never touch the Symfony Filesystem class directly — patch the transitive dependency, but don't build a roadmap item around adopting it.For Executives: "A security patch landed in the filesystem library our Laravel app depends on (v5.4.54). It fixes a case where temporary files could be left readable by other users on the same server — relevant if we run on shared or multi-tenant hosting. Remediation is a one-line dependency bump and redeploy: no feature work, no downtime, zero license cost (MIT). Recommend we slot it into the current release cycle as a routine security update, and confirm whether any of our temporary-file workflows (backups, exports, report generation) run on shared infrastructure — that answer determines whether it's a normal patch or a priority patch."
For Engineering Teams: *"What's in v5.4.54 (5.4 LTS branch — [SECURITY] release):
tempnam() files are now created private when a suffix is supplied (previously the suffix path could bypass private creation, leaving temp files with broader permissions).Action:
composer show symfony/filesystem — if you're on 5.4.x < 5.4.54, bump to ^5.4.54 and redeploy.tempnam() / temp-file usage: anything writing sensitive payloads (DB dumps, exports, generated documents) to a temp path before an atomic move. Verify umask and resulting file modes rather than assuming.config/, .env staging, key material. The mode-preservation fix is a behavior change: copies now keep source modes, so re-test any step that relied on copies landing with default permissions.umask settings.Version note (important): v5.4.54 is security-only. The path/backslash normalization fix from v8.0.9 is not part of this release. If our driver is cross-platform path correctness, patching 5.4 does not close that gap — the fix path is upgrading to the 8.x line.
Why the package, not a fork: upstream is actively triaged, security fixes are backported to LTS, and the integration is standard Symfony Filesystem — no bespoke abstraction to maintain."*
For Security/Compliance Teams: *"This is a [SECURITY]-tagged release addressing local temp-file exposure:
tempnam() now creates files private when a suffix is used — closes a local information-disclosure window for temporary artifacts on shared or multi-tenant hosts.>= 5.4.54 (or current 8.x) as the minimum approved version; add an alert on [SECURITY] release notes; confirm whether temp-file paths sit on shared storage — if yes, treat as priority remediation and document closure in the patch log."*How can I help you explore Laravel packages today?