修改
vendor->league->flysystem->Adapter->Ftp.php
createDir 方法改成:
public function createDir($dirname, Config $config) { $connection = $this->getConnection(); $directories = explode('/', $dirname); foreach ($directories as $directory) { if (false === $this->createActualDirectory($directory, $connection)) { $this->setConnectionRoot(); return false; } } $this->setConnectionRoot(); return ['type' => 'dir', 'path' => $dirname]; }
createActualDirectory方法改成:
protected function createActualDirectory($directory, $connection) { // List the current directory $listing = ftp_nlist($connection, '.') ?: []; foreach ($listing as $key => $item) { if (preg_match('~^\./.*~', $item)) { $listing[$key] = substr($item, 2); } } if (in_array($directory, $listing, true)) { return true; } if( @ftp_chdir($connection, $directory) === false ) { return (boolean) ftp_mkdir($connection, $directory); }else { return true; } }
更简单的方法可参考http://www.xiaoshu168.com/php/46.htmlStorage::disk('ftp')->makeDirectory( $Directory );//可直接传入ftp绝对路径