Upload empty bitmap image (bmp,gif,jpg,jpeg,png)
(or on console: touch test.png)
File list with all existing images
Empty file list, no files are shown, not even non-zero files
URL changes to include folder name
Folder in left column folder is not highligted as "current"
Joomla! 5.0.3
PHP 8.3.4 as fpm-fcgi on nginx
Happens with empty bmp,gif,jpg,jpeg,png files but not with ico,pdf,svg
File list shows properly if you remove the empty images or rename them top non-image file extension
Labels |
Removed:
?
|
Labels |
Added:
No Code Attached Yet
|
With error reporting set to none the folder contents is displayed as expected. I can see the above image.
With error reporting set to standard the initial issue shows up.
Additional info: browser console shows:
VM201:1 Uncaught SyntaxError: Unexpected token '<', "
"... is not valid JSON
at JSON.parse ()
at onSuccess (media-manager.min.js?3c55e4:1:84574)
at i.onreadystatechange (core.min.js?83f2c9:1:6174)
onSuccess @ media-manager.min.js?3c55e4:1
i.onreadystatechange @ core.min.js?83f2c9:1
XMLHttpRequest.send (async)
s @ core.min.js?83f2c9:1
r.request @ core.min.js?83f2c9:1
(anonymous) @ media-manager.min.js?3c55e4:1
getContents @ media-manager.min.js?3c55e4:1
getContents @ media-manager.min.js?3c55e4:5
(anonymous) @ media-manager.min.js?3c55e4:5
Store.dispatch @ media-manager.min.js?3c55e4:5
Store.dispatch @ media-manager.min.js?3c55e4:5
navigateTo @ media-manager.min.js?3c55e4:1
onItemClick @ media-manager.min.js?3c55e4:1
(anonymous) @ media-manager.min.js?3c55e4:1
(anonymous) @ media-manager.min.js?3c55e4:1
callWithErrorHandling @ media-manager.min.js?3c55e4:1
callWithAsyncErrorHandling @ media-manager.min.js?3c55e4:1
n @ media-manager.min.js?3c55e4:1
With error reporting set to simple the folder contents is displayed as expected also.
Yes, this is expected behaviour in this case. If PHP writes errors, notices or warnings into the output, the JSON response is no longer valid, and the Media Manager cannot process the response correctly. So, this is the symptom of the issue but not the source.
We should ensure that built-in PHP calls to retrieve image information do not create such errors because a 0-byte image is processed like a valid one.
I solved it years ago in my extensions by checking for the file size first before running any further calls on the file. We could also apply the same logic to the local adapter for the Media Manager.
We could also apply the same logic to the local adapter for the Media Manager.
I think that should be done, and as it’s a bug fix it should be done for the 4.4-dev branch if the issue happens also with 4.4.x. It will later be merged up into 5.1-dev by release managers.
We had a possibly related issue on a customer's site where they had uploaded an animated gif. This triggered the error:
imagecolorsforindex(): Argument #2 ($color) is out of range
in the Media Manager, and no images loaded.
Turns out Create Thumbnails was enabled in the "FileSystem - Local" plugin. Disabling Create Thumbnails fixed the error.
Animated gifs trigger the error on both 4.4 and 5.1 when Create Thumbnails is enabled.
and as it’s a bug fix - #43279 (comment)
@richard67 The issue hasn't the label bug
.
Labels |
Added:
bug
|
It's expected (code wise). The mime of the image files are checked through PHP functions which will obviously fail for an empty image:
joomla-cms/libraries/src/Helper/MediaHelper.php
Lines 86 to 125 in 45adb61
FWIW I had proposed a safer, faster alternative some time ago...