Make WordPress Core

Ticket #60398: 60398.diff

File 60398.diff, 1.3 KB (added by costdev, 16 months ago)

Fall back to PclZip if ZipArchive::open() does not return true.

  • src/wp-admin/includes/class-file-upload-upgrader.php

    diff --git a/src/wp-admin/includes/class-file-upload-upgrader.php b/src/wp-admin/includes/class-file-upload-upgrader.php
    index e62561518d..d01f08f6d7 100644
    a b class File_Upload_Upgrader { 
    7575                                /** This filter is documented in wp-admin/includes/file.php */
    7676                                if ( class_exists( 'ZipArchive', false ) && apply_filters( 'unzip_file_use_ziparchive', true ) ) {
    7777                                        $archive          = new ZipArchive();
    78                                         $archive_is_valid = $archive->open( $file['file'], ZIPARCHIVE::CHECKCONS );
     78                                        $archive_is_valid = $archive->open( $file['file'], ZipArchive::CHECKCONS );
    7979
    8080                                        if ( true === $archive_is_valid ) {
    8181                                                $archive->close();
    8282                                        }
    83                                 } else {
     83                                }
     84
     85                                /*
     86                                 * Use PclZip if:
     87                                 * - ZipArchive is unavailable.
     88                                 * - ZipArchive is disabled.
     89                                 * - ZipArchive was unable to successfully open the ZIP.
     90                                 *     This may indicate a ZIP archive is inconsistent, which
     91                                 *     should not block its installation.
     92                                 *     @see https://core.trac.wordpress.org/ticket/60398
     93                                 */
     94                                if ( true !== $archive_is_valid ) {
    8495                                        require_once ABSPATH . 'wp-admin/includes/class-pclzip.php';
    8596
    8697                                        $archive          = new PclZip( $file['file'] );