diff --git a/src/Ftp/FtpAdapter.php b/src/Ftp/FtpAdapter.php index 797ab0c93..53386374e 100644 --- a/src/Ftp/FtpAdapter.php +++ b/src/Ftp/FtpAdapter.php @@ -96,7 +96,8 @@ public function __construct( $this->connectionProvider = $connectionProvider ?: new FtpConnectionProvider(); $this->connectivityChecker = $connectivityChecker ?: new NoopCommandConnectivityChecker(); $this->visibilityConverter = $visibilityConverter ?: new PortableVisibilityConverter(); - $this->prefixer = new PathPrefixer($connectionOptions->root()); + $this->rootDirectory = $this->resolveConnectionRoot($this->connection()); + $this->prefixer = new PathPrefixer($this->rootDirectory); $this->mimeTypeDetector = $mimeTypeDetector ?: new FinfoMimeTypeDetector(); } @@ -119,7 +120,6 @@ private function connection() start: if ( ! $this->hasFtpConnection()) { $this->connection = $this->connectionProvider->createConnection($this->connectionOptions); - $this->rootDirectory = $this->resolveConnectionRoot($this->connection); return $this->connection; } @@ -596,7 +596,7 @@ private function ensureDirectoryExists(string $dirname, ?string $visibility): vo $connection = $this->connection(); $dirPath = ''; - $parts = explode('/', rtrim($dirname, '/')); + $parts = explode('/', trim($dirname, '/')); $mode = $visibility ? $this->visibilityConverter->forDirectory($visibility) : false; foreach ($parts as $part) { diff --git a/src/Ftp/FtpAdapterTestCase.php b/src/Ftp/FtpAdapterTestCase.php index fc58b140f..0e5438248 100644 --- a/src/Ftp/FtpAdapterTestCase.php +++ b/src/Ftp/FtpAdapterTestCase.php @@ -58,13 +58,11 @@ public function using_empty_string_for_root(): void $this->runScenario(function () use ($options) { $adapter = new FtpAdapter($options); - $adapter->write('dirname/path.txt', 'contents', new Config([ - Config::OPTION_VISIBILITY => Visibility::PUBLIC, - Config::OPTION_DIRECTORY_VISIBILITY => Visibility::PUBLIC - ])); + $adapter->write('dirname1/dirname2/path.txt', 'contents', new Config()); + $adapter->write('dirname1/dirname2/path.txt', 'contents', new Config()); - $this->assertTrue($adapter->fileExists('dirname/path.txt')); - $this->assertSame('contents', $adapter->read('dirname/path.txt')); + $this->assertTrue($adapter->fileExists('dirname1/dirname2/path.txt')); + $this->assertSame('contents', $adapter->read('dirname1/dirname2/path.txt')); }); }