From e0144ae7b2215ff6819b777454f419e7561a66d9 Mon Sep 17 00:00:00 2001 From: rxu Date: Wed, 24 May 2023 22:39:16 +0700 Subject: [PATCH] [ticket/17139] Fix PHP fatal error for file transfer tool of updater Uncaught TypeError: ftp_delete(): Argument #1 ($ftp) must be of type FTP\\Connection, bool given Stack trace: #0 [ROOT]/includes/functions_transfer.php(427): ftp_delete(false, '...') PHPBB3-17139 --- phpBB/includes/functions_transfer.php | 50 +++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/phpBB/includes/functions_transfer.php b/phpBB/includes/functions_transfer.php index 4621725be1..763b6c70db 100644 --- a/phpBB/includes/functions_transfer.php +++ b/phpBB/includes/functions_transfer.php @@ -341,6 +341,11 @@ class ftp extends transfer */ function _mkdir($dir) { + if (!$this->connection) + { + return false; + } + return @ftp_mkdir($this->connection, $dir); } @@ -350,6 +355,11 @@ class ftp extends transfer */ function _rmdir($dir) { + if (!$this->connection) + { + return false; + } + return @ftp_rmdir($this->connection, $dir); } @@ -359,6 +369,11 @@ class ftp extends transfer */ function _rename($old_handle, $new_handle) { + if (!$this->connection) + { + return false; + } + return @ftp_rename($this->connection, $old_handle, $new_handle); } @@ -368,6 +383,11 @@ class ftp extends transfer */ function _chdir($dir = '') { + if (!$this->connection) + { + return false; + } + if ($dir && $dir !== '/') { if (substr($dir, -1, 1) == '/') @@ -385,6 +405,11 @@ class ftp extends transfer */ function _chmod($file, $perms) { + if (!$this->connection) + { + return false; + } + if (function_exists('ftp_chmod')) { $err = @ftp_chmod($this->connection, $perms, $file); @@ -406,6 +431,11 @@ class ftp extends transfer */ function _put($from_file, $to_file) { + if (!$this->connection) + { + return false; + } + // We only use the BINARY file mode to cicumvent rewrite actions from ftp server (mostly linefeeds being replaced) $mode = FTP_BINARY; @@ -425,6 +455,11 @@ class ftp extends transfer */ function _delete($file) { + if (!$this->connection) + { + return false; + } + return @ftp_delete($this->connection, $file); } @@ -449,6 +484,11 @@ class ftp extends transfer */ function _cwd() { + if (!$this->connection) + { + return false; + } + return @ftp_pwd($this->connection); } @@ -458,6 +498,11 @@ class ftp extends transfer */ function _ls($dir = './') { + if (!$this->connection) + { + return false; + } + $list = @ftp_nlist($this->connection, $dir); // See bug #46295 - Some FTP daemons don't like './' @@ -498,6 +543,11 @@ class ftp extends transfer */ function _site($command) { + if (!$this->connection) + { + return false; + } + return @ftp_site($this->connection, $command); } }