[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
This commit is contained in:
rxu 2023-05-24 22:39:16 +07:00
parent c2c7c271e7
commit e0144ae7b2
No known key found for this signature in database
GPG key ID: 955F0567380E586A

View file

@ -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);
}
}