oprudkyi / flysystem-curlftp
Flysystem V2/V3 Adapter for the FTP with cURL implementation (supports Implicit FTP over TLS and proxy)
Installs: 41 761
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 0
Forks: 23
Open Issues: 0
pkg:composer/oprudkyi/flysystem-curlftp
Requires
- php: ^8.0.2
- ext-curl: *
- ext-intl: *
- league/flysystem: ^2.0 || ^3.0
Requires (Dev)
- fakerphp/faker: ^1.24
- friendsofphp/php-cs-fixer: ^3.5
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.0
This package is auto-updated.
Last update: 2025-09-28 18:55:14 UTC
README
This package contains a Flysystem FTP adapter with cURL implementation. While compatible with Flysystem FTP Adapter it additionally provides support for:
- implicit FTP over TLS (FTPS)
- proxies
As well it is a fork and a temporary drop-in replacement of flysystem-curlftp:
- support of Flysystem V2/V3
- re-implemented based on flysystem-ftp
- updated dependencies
- phpstan level 6
Installation
You can install the package via composer:
composer require oprudkyi/flysystem-curlftp
Usage
use League\Flysystem\Filesystem; use VladimirYuldashev\Flysystem\CurlFtpAdapter; use VladimirYuldashev\Flysystem\CurlFtpConnectionOptions; $adapter = new CurlFtpAdapter( CurlFtpConnectionOptions::fromArray([ 'host' => 'ftp.example.com', 'username' => 'username', 'password' => 'password', /** optional config settings */ 'port' => 21, 'root' => '/path/to/root', 'utf8' => true, 'ftps' => true, // use ftps:// with implicit TLS or ftp:// with explicit TLS 'ssl' => true, 'timeout' => 90, // connect timeout 'passive' => true, // default use PASV mode 'ignorePassiveAddress' => true, // ignore the IP address in the PASV response 'sslVerifyPeer' => 0, // using 0 is insecure, use it only if you know what you're doing 'sslVerifyHost' => 0, // using 0 is insecure, use it only if you know what you're doing 'timestampsOnUnixListingsEnabled' => true, /** optional limit for curl connection caching * allows to reduce count of tcp connections to avoid hitting ftp-server max connections/max clients limits * https://curl.se/libcurl/c/CURLOPT_MAXCONNECTS.html * if not set then used curl default value (5) 'maxCachedConnections' => 1, */ /** proxy settings */ 'proxyHost' => 'proxy-server.example.com', 'proxyPort' => 80, 'proxyUsername' => 'proxyuser', 'proxyPassword' => 'proxypassword', 'verbose' => false // set verbose mode on/off ]) ); $filesystem = new Filesystem($adapter);
Testing
$ composer test
Upgrade from 1.x
- use CurlFtpConnectionOptions for creating adapter
use VladimirYuldashev\Flysystem\CurlFtpAdapter;
use VladimirYuldashev\Flysystem\CurlFtpConnectionOptions;
...
$adapter = new CurlFtpAdapter(
CurlFtpConnectionOptions::fromArray([
...
skipPasvIpoption renamed toignorePassiveAddressfor compatibitlity with Flysystem FTP AdapterenableTimestampsOnUnixListingsoption renamed totimestampsOnUnixListingsEnabledfor compatibitlity with Flysystem FTP Adapter
License
The MIT License (MIT). Please see License File for more information.