Skip to content

Commit f3e7965

Browse files
committed
Fix error handling of some methods
1 parent 51bf2ab commit f3e7965

File tree

2 files changed

+26
-24
lines changed

2 files changed

+26
-24
lines changed

src/FtpClient.php

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,8 @@ public function createDirectory($directory)
461461

462462
if (!$this->isExists($dir)) {
463463
if (!$this->wrapper->mkdir($dir)) {
464-
return false;
464+
throw new FtpClientException(FtpClientException::getFtpServerError()
465+
?: 'Unable to create directory ['.$dir.']');
465466
}
466467
}
467468
}
@@ -819,26 +820,26 @@ public function download($remoteFile, $localFile, $resume = true, $mode = FtpWra
819820
public function getTransferMode($fileName)
820821
{
821822
if (
822-
in_array(substr($fileName, strpos($fileName, '.') + 1), [
823-
"3dm", "3ds", "3g2", "3gp", "7z", "a", "aac", "adp", "ai", "aif", "aiff", "alz", "apk", "ape", "ar",
824-
"arj", "asf", "au", "avi", "bak", "baml", "bh", "bin", "bk", "bmp", "btif", "bz2", "bzip2", "cab",
825-
"caf", "cgm", "class", "cmx", "cpio", "cr2", "cur", "dat", "dcm", "deb", "dex", "djvu", "dll", "dmg",
826-
"dng", "doc", "docm", "docx", "dot", "dotm", "dra", "DS_Store", "dsk", "dts", "dtshd", "dvb", "dwg",
827-
"dxf", "ecelp4800", "ecelp7470", "ecelp9600", "egg", "eol", "eot", "epub", "exe", "f4v", "fbs", "fh",
828-
"fla", "flac", "fli", "flv", "fpx", "fst", "fvt", "g3", "gh", "gif", "graffle", "gz", "gzip", "h261",
829-
"h263", "h264", "icns", "ico", "ief", "img", "ipa", "iso", "jar", "jpeg", "jpg", "jpgv", "jpm", "jxr",
830-
"key", "ktx", "lha", "lib", "lvp", "lz", "lzh", "lzma", "lzo", "m3u", "m4a", "m4v", "mar", "mdi", "mht",
831-
"mid", "midi", "mj2", "mka", "mkv", "mmr", "mng", "mobi", "mov", "movie", "mp3", "mp4", "mp4a", "mpeg",
832-
"mpg", "mpga", "mxu", "nef", "npx", "numbers", "nupkg", "o", "oga", "ogg", "ogv", "otf", "pages", "pbm",
833-
"pcx", "pdb", "pdf", "pea", "pgm", "pic", "png", "pnm", "pot", "potm", "potx", "ppa", "ppam", "ppm",
834-
"pps", "ppsm", "ppsx", "ppt", "pptm", "pptx", "psd", "pya", "pyc", "pyo", "pyv", "qt", "rar", "ras",
835-
"raw", "resources", "rgb", "rip", "rlc", "rmf", "rmvb", "rtf", "rz", "s3m", "s7z", "scpt", "sgi",
836-
"shar", "sil", "sketch", "slk", "smv", "snk", "so", "stl", "suo", "sub", "swf", "tar", "tbz", "tbz2",
837-
"tga", "tgz", "thmx", "tif", "tiff", "tlz", "ttc", "ttf", "txz", "udf", "uvh", "uvi", "uvm", "uvp",
838-
"uvs", "uvu", "viv", "vob", "war", "wav", "wax", "wbmp", "wdp", "weba", "webm", "webp", "whl", "wim",
839-
"wm", "wma", "wmv", "wmx", "woff", "woff2", "wrm", "wvx", "xbm", "xif", "xla", "xlam", "xls", "xlsb",
840-
"xlsm", "xlsx", "xlt", "xltm", "xltx", "xm", "xmind", "xpi", "xpm", "xwd", "xz", "z", "zip", "zipx"
841-
])
823+
in_array(substr($fileName, strpos($fileName, '.') + 1), [
824+
"3dm", "3ds", "3g2", "3gp", "7z", "a", "aac", "adp", "ai", "aif", "aiff", "alz", "apk", "ape", "ar",
825+
"arj", "asf", "au", "avi", "bak", "baml", "bh", "bin", "bk", "bmp", "btif", "bz2", "bzip2", "cab",
826+
"caf", "cgm", "class", "cmx", "cpio", "cr2", "cur", "dat", "dcm", "deb", "dex", "djvu", "dll", "dmg",
827+
"dng", "doc", "docm", "docx", "dot", "dotm", "dra", "DS_Store", "dsk", "dts", "dtshd", "dvb", "dwg",
828+
"dxf", "ecelp4800", "ecelp7470", "ecelp9600", "egg", "eol", "eot", "epub", "exe", "f4v", "fbs", "fh",
829+
"fla", "flac", "fli", "flv", "fpx", "fst", "fvt", "g3", "gh", "gif", "graffle", "gz", "gzip", "h261",
830+
"h263", "h264", "icns", "ico", "ief", "img", "ipa", "iso", "jar", "jpeg", "jpg", "jpgv", "jpm", "jxr",
831+
"key", "ktx", "lha", "lib", "lvp", "lz", "lzh", "lzma", "lzo", "m3u", "m4a", "m4v", "mar", "mdi", "mht",
832+
"mid", "midi", "mj2", "mka", "mkv", "mmr", "mng", "mobi", "mov", "movie", "mp3", "mp4", "mp4a", "mpeg",
833+
"mpg", "mpga", "mxu", "nef", "npx", "numbers", "nupkg", "o", "oga", "ogg", "ogv", "otf", "pages", "pbm",
834+
"pcx", "pdb", "pdf", "pea", "pgm", "pic", "png", "pnm", "pot", "potm", "potx", "ppa", "ppam", "ppm",
835+
"pps", "ppsm", "ppsx", "ppt", "pptm", "pptx", "psd", "pya", "pyc", "pyo", "pyv", "qt", "rar", "ras",
836+
"raw", "resources", "rgb", "rip", "rlc", "rmf", "rmvb", "rtf", "rz", "s3m", "s7z", "scpt", "sgi",
837+
"shar", "sil", "sketch", "slk", "smv", "snk", "so", "stl", "suo", "sub", "swf", "tar", "tbz", "tbz2",
838+
"tga", "tgz", "thmx", "tif", "tiff", "tlz", "ttc", "ttf", "txz", "udf", "uvh", "uvi", "uvm", "uvp",
839+
"uvs", "uvu", "viv", "vob", "war", "wav", "wax", "wbmp", "wdp", "weba", "webm", "webp", "whl", "wim",
840+
"wm", "wma", "wmv", "wmx", "woff", "woff2", "wrm", "wvx", "xbm", "xif", "xla", "xlam", "xls", "xlsb",
841+
"xlsm", "xlsx", "xlt", "xltm", "xltx", "xm", "xmind", "xpi", "xpm", "xwd", "xz", "z", "zip", "zipx"
842+
])
842843
) {
843844
return FtpWrapper::BINARY;
844845
}
@@ -996,7 +997,8 @@ public function createFile($remoteFile, $content = null)
996997
rewind($handle); // Rewind position
997998

998999
if (!$this->wrapper->fput($remoteFile, $handle, FtpWrapper::ASCII)) {
999-
throw new FtpClientException("Failed to create file [{$remoteFile}].");
1000+
throw new FtpClientException(FtpClientException::getFtpServerError() ?:
1001+
"Failed to create file [{$remoteFile}].");
10001002
}
10011003

10021004
return true;

src/FtpWrapper.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ public function rmdir($directory)
273273
*/
274274
public function mkdir($directory)
275275
{
276-
return ftp_mkdir($this->connection->getStream(), $directory);
276+
return @ftp_mkdir($this->connection->getStream(), $directory);
277277
}
278278

279279
/**
@@ -392,7 +392,7 @@ public function put($remoteFile, $localFile, $mode, $startPos = 0)
392392
*/
393393
public function fput($remoteFile, $handle, $mode, $startPos = 0)
394394
{
395-
return ftp_fput($this->connection->getStream(), $remoteFile, $handle, $mode, $startPos);
395+
return @ftp_fput($this->connection->getStream(), $remoteFile, $handle, $mode, $startPos);
396396
}
397397

398398
/**

0 commit comments

Comments
 (0)