From 0e2f9b50191969e406601998054bc052276ae4ec Mon Sep 17 00:00:00 2001 From: Dion Hulse Date: Thu, 1 Oct 2015 05:08:07 +0000 Subject: [PATCH] Updates: Try a more compatible method to detect if a file exists when using the FTP Extension. This change causes it to list the parent directories files, and assets that the node exists within the returned listing, this is a little more compatible than relying upon the FTP server to correctly filter the returned resultset to the specific file/node being requested. Fixes #28013 git-svn-id: https://develop.svn.wordpress.org/trunk@34733 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/class-wp-filesystem-ftpext.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/wp-admin/includes/class-wp-filesystem-ftpext.php b/src/wp-admin/includes/class-wp-filesystem-ftpext.php index 541079d7b3..c869ec0dc9 100644 --- a/src/wp-admin/includes/class-wp-filesystem-ftpext.php +++ b/src/wp-admin/includes/class-wp-filesystem-ftpext.php @@ -316,14 +316,16 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base { * @param string $file * @return bool */ - public function exists($file) { - $list = @ftp_rawlist( $this->link, '-a ' . $file ); + public function exists( $file ) { + $path = dirname( $file ); + $filename = basename( $file ); - if ( empty( $list ) && $this->is_dir( $file ) ) { - return true; // File is an empty directory. + $file_list = @ftp_nlist( $this->link, '-a ' . $path ); + if ( $file_list ) { + $file_list = array_map( 'basename', $file_list ); } - return !empty($list); //empty list = no file, so invert. + return $file_list && in_array( $filename, $file_list ); } /**