Lychee: EXIF tool addition breaks importing PNG and GIFs

Detailed description of the problem

Unless I’m missing a package (I’ve installed php-exif and exiftool), I’m now getting a 500 error when importing PNG or GIF files. I’ve tried both with has_exiftool = 0 and = 1.

Error when has_exiftool=0:

(1/1) Error  Call to a member function getMimeType() on bool
--
in Extractor.php line 87
at Extractor->extract('/app/lychee/public/uploads/big/b38c37a22a3dea48ba0f556f1052c568.gif', 'image/gif')in PhotoFunctions.php line 331
at PhotoFunctions->add(array('name' => 'XMHK3LQ.gif', 'type' => 'image/gif', 'tmp_name' => '/tmp/phpneoMff'), '0')in PhotoController.php line 173
at PhotoController->add(object(Request))
at call_user_func_array(array(object(PhotoController), 'add'), array(object(Request)))in Controller.php line 54
at Controller->callAction('add', array(object(Request)))in ControllerDispatcher.php line 45
at ControllerDispatcher->dispatch(object(Route), object(PhotoController), 'add')in Route.php line 219
at Route->runController()in Route.php line 176
at Route->run()in Router.php line 681
at Router->Illuminate\Routing\{closure}(object(Request))in Pipeline.php line 130
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in UploadCheck.php line 54
at UploadCheck->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in SubstituteBindings.php line 41
at SubstituteBindings->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in VerifyCsrfToken.php line 76
at VerifyCsrfToken->handle(object(Request), object(Closure))in VerifyCsrfToken.php line 60
at VerifyCsrfToken->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in AuthenticateSession.php line 39
at AuthenticateSession->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in StartSession.php line 56
at StartSession->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in EncryptCookies.php line 66
at EncryptCookies->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php line 105
at Pipeline->then(object(Closure))in Router.php line 683
at Router->runRouteWithinStack(object(Route), object(Request))in Router.php line 658
at Router->runRoute(object(Request), object(Route))in Router.php line 624
at Router->dispatchToRoute(object(Request))in Router.php line 613
at Router->dispatch(object(Request))in Kernel.php line 177
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))in Pipeline.php line 130
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in SecureHeadersMiddleware.php line 21
at SecureHeadersMiddleware->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in TrustProxies.php line 57
at TrustProxies->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in TransformsRequest.php line 21
at TransformsRequest->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in TransformsRequest.php line 21
at TransformsRequest->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in ValidatePostSize.php line 27
at ValidatePostSize->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in CheckForMaintenanceMode.php line 62
at CheckForMaintenanceMode->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php line 105
at Pipeline->then(object(Closure))in Kernel.php line 152
at Kernel->sendRequestThroughRouter(object(Request))in Kernel.php line 117
at Kernel->handle(object(Request))in index.php line 53

Error when has_exiftool=1

(1/1) ErrorException  Undefined offset: 1
--
in Exiftool.php line 297
at HandleExceptions->handleError(8, 'Undefined offset: 1', '/app/lychee/vendor/lychee-org/php-exif/lib/PHPExif/Mapper/Exiftool.php', 297, array('data' => array('SourceFile'  =>  '/app/lychee/public/uploads/big/88882e7b0d64d1af3ada61c2afd9f3ca.gif',  'ExifTool:ExifToolVersion' => 11.79, 'System:FileName' =>  '88882e7b0d64d1af3ada61c2afd9f3ca.gif', 'System:Directory' =>  '/app/lychee/public/uploads/big', 'System:FileSize' => 544227,  'System:FileModifyDate' => '2019:12:24 18:22:37+00:00',  'System:FileAccessDate' => '2019:12:24 18:22:37+00:00',  'System:FileInodeChangeDate' => '2019:12:24 18:22:37+00:00',  'System:FilePermissions' => 644, 'File:FileType' => 'GIF',  'File:FileTypeExtension' => 'GIF', 'File:MIMEType' => 'image/gif',  'GIF:GIFVersion' => '89a', 'GIF:ImageWidth' => 500,  'GIF:ImageHeight' => 340, 'GIF:HasColorMap' => 1,  'GIF:ColorResolutionDepth' => 8, 'GIF:BitsPerPixel' => 6,  'GIF:BackgroundColor' => 0, 'GIF:AnimationIterations' => 0,  'GIF:FrameCount' => 42, 'GIF:Duration' => 3.78,  'Composite:ImageSize' => '500 340', 'Composite:Megapixels' =>  0.17), 'mappedData' => array('FileName' =>  '88882e7b0d64d1af3ada61c2afd9f3ca.gif', 'FileSize' => 544227,  'MimeType' => 'image/gif', 'width' => 500), 'gpsData' => array(), 'value' => '500 340', 'field' => 'Composite:ImageSize', 'key' => 'width', 'value_splitted' => array('500 340'), 'rotate' => false))in Exiftool.php line 297
at Exiftool->mapRawData(array('SourceFile'  =>  '/app/lychee/public/uploads/big/88882e7b0d64d1af3ada61c2afd9f3ca.gif',  'ExifTool:ExifToolVersion' => 11.79, 'System:FileName' =>  '88882e7b0d64d1af3ada61c2afd9f3ca.gif', 'System:Directory' =>  '/app/lychee/public/uploads/big', 'System:FileSize' => 544227,  'System:FileModifyDate' => '2019:12:24 18:22:37+00:00',  'System:FileAccessDate' => '2019:12:24 18:22:37+00:00',  'System:FileInodeChangeDate' => '2019:12:24 18:22:37+00:00',  'System:FilePermissions' => 644, 'File:FileType' => 'GIF',  'File:FileTypeExtension' => 'GIF', 'File:MIMEType' => 'image/gif',  'GIF:GIFVersion' => '89a', 'GIF:ImageWidth' => 500,  'GIF:ImageHeight' => 340, 'GIF:HasColorMap' => 1,  'GIF:ColorResolutionDepth' => 8, 'GIF:BitsPerPixel' => 6,  'GIF:BackgroundColor' => 0, 'GIF:AnimationIterations' => 0,  'GIF:FrameCount' => 42, 'GIF:Duration' => 3.78,  'Composite:ImageSize' => '500 340', 'Composite:Megapixels' =>  0.17))in Exiftool.php line 159
at Exiftool->getExifFromFile('/app/lychee/public/uploads/big/88882e7b0d64d1af3ada61c2afd9f3ca.gif')in Reader.php line 103
at Reader->read('/app/lychee/public/uploads/big/88882e7b0d64d1af3ada61c2afd9f3ca.gif')in Extractor.php line 85
at Extractor->extract('/app/lychee/public/uploads/big/88882e7b0d64d1af3ada61c2afd9f3ca.gif', 'image/gif')in PhotoFunctions.php line 331
at PhotoFunctions->add(array('name' => 'XMHK3LQ.gif', 'type' => 'image/gif', 'tmp_name' => '/tmp/phpDIBoLN'), '0')in PhotoController.php line 173
at PhotoController->add(object(Request))
at call_user_func_array(array(object(PhotoController), 'add'), array(object(Request)))in Controller.php line 54
at Controller->callAction('add', array(object(Request)))in ControllerDispatcher.php line 45
at ControllerDispatcher->dispatch(object(Route), object(PhotoController), 'add')in Route.php line 219
at Route->runController()in Route.php line 176
at Route->run()in Router.php line 681
at Router->Illuminate\Routing\{closure}(object(Request))in Pipeline.php line 130
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in UploadCheck.php line 54
at UploadCheck->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in SubstituteBindings.php line 41
at SubstituteBindings->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in VerifyCsrfToken.php line 76
at VerifyCsrfToken->handle(object(Request), object(Closure))in VerifyCsrfToken.php line 60
at VerifyCsrfToken->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in AuthenticateSession.php line 39
at AuthenticateSession->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in StartSession.php line 56
at StartSession->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in EncryptCookies.php line 66
at EncryptCookies->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php line 105
at Pipeline->then(object(Closure))in Router.php line 683
at Router->runRouteWithinStack(object(Route), object(Request))in Router.php line 658
at Router->runRoute(object(Request), object(Route))in Router.php line 624
at Router->dispatchToRoute(object(Request))in Router.php line 613
at Router->dispatch(object(Request))in Kernel.php line 177
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))in Pipeline.php line 130
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in SecureHeadersMiddleware.php line 21
at SecureHeadersMiddleware->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in TrustProxies.php line 57
at TrustProxies->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in TransformsRequest.php line 21
at TransformsRequest->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in TransformsRequest.php line 21
at TransformsRequest->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in ValidatePostSize.php line 27
at ValidatePostSize->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in CheckForMaintenanceMode.php line 62
at CheckForMaintenanceMode->handle(object(Request), object(Closure))in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php line 105
at Pipeline->then(object(Closure))in Kernel.php line 152
at Kernel->sendRequestThroughRouter(object(Request))in Kernel.php line 117
at Kernel->handle(object(Request))in index.php line 53

JPEG images work fine in both cases.

Steps to reproduce the issue

Fresh install of lychee-laravel > upload file > choose PNG or GIF

Output of the diagnostics

    Diagnostics
    -----------
    Info: Latest version of PHP is 7.4
    Warning: Dropbox import not working. dropbox_key is empty.

    System Information
    ------------------
    Lychee-front Version:      3.2.16
    Lychee Version (git):      ce689ab (master) - Data not in Cache
    DB Version:                040000
    System:                    Linux
    PHP Version:               7.3
    MySQL Version:             10.4.11-MariaDB-1:10.4.11+maria~bionic-log
    
    Lychee total space:        62.55 MB
    Upload folder space:       13.00 B
    System total space:        218.57 GB
    System free space:         25.13 GB (11%)
    
    Imagick:                   1
    Imagick Active:            1
    Imagick Version:           1801
    GD Version:                bundled (2.1.0 compatible)

    Config Information
    ------------------
    version:                   040000
    check_for_updates:         0
    sorting_Photos_col:        takestamp
    sorting_Photos_order:      ASC
    sorting_Albums_col:        max_takestamp
    sorting_Albums_order:      ASC
    imagick:                   1
    skip_duplicates:           0
    small_max_width:           0
    small_max_height:          360
    medium_max_width:          1920
    medium_max_height:         1080
    lang:                      en
    layout:                    1
    image_overlay:             1
    image_overlay_type:        desc
    default_license:           none
    compression_quality:       90
    full_photo:                1
    delete_imported:           0
    Mod_Frame:                 1
    Mod_Frame_refresh:         30
    thumb_2x:                  1
    small_2x:                  1
    medium_2x:                 1
    landing_page_enable:       0
    landing_owner:             John Smith
    landing_title:             John Smith
    landing_subtitle:          Cats, Dogs & Humans Photography
    landing_facebook:          https://www.facebook.com/JohnSmith
    landing_flickr:            https://www.flickr.com/JohnSmith
    landing_twitter:           https://www.twitter.com/JohnSmith
    landing_instagram:         https://instagram.com/JohnSmith
    landing_youtube:           https://www.youtube.com/JohnSmith
    landing_background:        dist/cat.jpg
    site_title:                Lychee v4
    site_copyright_enable:     1
    site_copyright_begin:      2019
    site_copyright_end:        2019
    additional_footer_text:    
    display_social_in_gallery: 0
    public_search:             0
    public_recent:             0
    recent_age:                1
    public_starred:            0
    downloadable:              0
    photos_wraparound:         1
    map_display:               0
    zip64:                     1
    map_display_public:        0
    map_provider:              Wikimedia
    force_32bit_ids:           0
    map_include_subalbums:     0
    update_check_every_days:   3
    has_exiftool:              1
    share_button_visible:      0

Browser and system

lychee-laravel master on Linux (alpine)

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 25 (25 by maintainers)

Most upvoted comments

Running it in docker and did a fresh build, but after I manually ran install / upgrade, then it worked fine. Thanks guys!

Did you run composer install or/and composer update?