trippo / ResponsiveFilemanager

Completely Responsive Filemanager with integration for tinyMCE,CKEditor and CLEditor editor
http://responsivefilemanager.com
Other
808 stars 368 forks source link

Warning: mime_content_type(): Empty filename or path #680

Open PHPism opened 2 years ago

PHPism commented 2 years ago

I'm receiving this warning occasionally. Not all the time. And even with this warning, the file is uploaded successfully. I hope you can help me get rid of it. I'm using php7.4 and the uploaded image file name is "WhatsApp Image 2021-12-30 at 10-20-23 AM.jpg". Sometimes I uploaded files are from mobile devices and most of time have Arabic letters in file names.

PHP Warning:  mime_content_type(): Empty filename or path in /****/filemanager/upload.php on line 117
PHP Warning:  fopen(): Filename cannot be empty in /****/filemanager/UploadHandler.php on line 1089
PHP Warning:  fread() expects parameter 1 to be resource, bool given in /****/filemanager/UploadHandler.php on line 1090
PHP Warning:  fclose() expects parameter 1 to be resource, bool given in /****/filemanager/UploadHandler.php on line 1091

Code at upload.php at line 117

/*Line 113*/ if ($config['mime_extension_rename']) {
        $info = pathinfo($_FILES['files']['name'][0]);
        $mime_type = $_FILES['files']['type'][0];
        if (function_exists('mime_content_type')) {
/*Line 117*/            $mime_type = mime_content_type($_FILES['files']['tmp_name'][0]);
        } elseif (function_exists('finfo_open')) {
            $finfo = finfo_open(FILEINFO_MIME_TYPE);
            $mime_type = finfo_file($finfo, $_FILES['files']['tmp_name'][0]);
        } else {
            $mime_type = get_file_mime_type($_FILES['files']['tmp_name'][0]);
        }
        $extension = get_extension_from_mime($mime_type);

        if ($extension == 'so' || $extension == '' || $mime_type == "text/troff") {
            $extension = $info['extension'];
        }
        $filename = $info['filename'] . "." . $extension;
    } else {
        $filename = $_FILES['files']['name'][0];
    }
    $_FILES['files']['name'][0] = fix_filename($filename, $config);

Code at UploadHandler.php at line 1089:

protected function imagetype($file_path) {
/*Line 1089*/         $fp = fopen($file_path, 'r');
        $data = fread($fp, 4);
        fclose($fp);
        // GIF: 47 49 46 38
        if ($data === 'GIF8') {
            return self::IMAGETYPE_GIF;
        }
        // JPG: FF D8 FF
        if (bin2hex(substr($data, 0, 3)) === 'ffd8ff') {
            return self::IMAGETYPE_JPEG;
        }
        // PNG: 89 50 4E 47
        if (bin2hex(@$data[0]).substr($data, 1, 4) === '89PNG') {
            return self::IMAGETYPE_PNG;
        }
        if ($data === 'RIFF') {
            return self::IMAGETYPE_WEBP;
        }
        return false;
    }