sf2h/sftp-bundle
Symfony bundle that adds SFTP integration, with configurable connections and services for secure file transfers, uploads, downloads, and remote file management in PHP applications.
ssh2/phpseclib-style primitives. The real build-vs-buy decision is not "this package vs. nothing" — it is in-process SFTP client vs. a managed transfer service (AWS Transfer Family, SFTP Gateway, MFT vendors). Choose in-process only when volumes are modest, endpoints are few, and the file flow is synchronous with a job/batch.sf2h/sftp-bundle, SFTPBundle), not a Laravel package, despite being evaluated in a Laravel/PHP context. If the product is Laravel, this signals an adapter gap: adopting it means either running it outside its intended container or hand-rolling the wiring. That is a product-level integration tax, not a technical footnote.Consider it when all of the following hold:
Look elsewhere — decisively — when any of these are true:
sftp disk driver via Flysystem. Reaching for a Symfony bundle to do what Storage::disk('sftp')->put(...) already does is a net-negative trade: extra surface, zero coverage, unfamiliar abstractions. Use the native disk.phpseclib or league/flysystem-sftp directly and skip the middle layer.To executives: This is a small, free, MIT-licensed helper for moving files to and from partner SFTP servers — a common requirement in B2B and finance-adjacent workflows. It is not a vendor relationship; it is closer to a code sample. With three stars, no downstream users, and no release since December 2020, we should treat it as unmaintained. The right framing is not "adopt this package" but "we need SFTP capability; here are three ways to get it, and this is the cheapest-looking but least-supported one." The cost of adopting it is not the license — it's the internal ownership we take on the day we ship it.
To engineering: Two things to say plainly. First, this is a Symfony bundle, not a Laravel package — if we're on Laravel, our own sftp filesystem disk (Flysystem-backed) already covers the common cases and is maintained; that should be the default answer, and this package needs a specific justification to beat it. Second, it's thin and stale: primitives only, last touched in 2020, no test or CI signal we can rely on. If we do use it, we fork it into our repo, pin it, add tests around credential handling and error paths, and set expectations that we own it forever. If the requirement is anything more than list/get/put/delete on a schedule, we should start from phpseclib or league/flysystem-sftp instead and save ourselves the rewrite.
Recommendation: Do not adopt as a dependency. Use it as a reference implementation for scoping effort (it demonstrates the problem is small), and make the real decision between Laravel's native SFTP disk and a direct phpseclib/Flysystem integration. Reserve managed transfer services for when volume, compliance, or multi-tenant credential handling shows up on the roadmap.
How can I help you explore Laravel packages today?