Bug #93345
openException when image with 0 bytes is used for click enlarge
0%
Description
This edge case issue occurred after a TYPO3 8.7 to 10.4 migration.
How to reproduce:
- TypoScript Constant
styles.content.textmedia.linkWrap.lightboxEnabled = 1
must be set - User uploads an image file
test.jpg
which has a size of 0 bytes - User uses the uploaded image in a image content element
- User sets the file width or height in the content element to a various integer (e.g.
100
) - User selects the "Click-Enlarge" option
Opening the page with the image content element will result in an exception.
PHP Catchable Fatal Error: Object of class TYPO3\CMS\Core\Resource\FileReference could not be converted to string in /path/to/typo3/typo3_src-10.4.12/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php line 4454
isImage()
returns false
since the file is 0 bytes and then the FilePathSanitizer
tries to typecast the file
variable (which is a FileReference
) to a string.
Updated by Jan Epper over 3 years ago
This seems to be the same or a similar bug like #87784. According to Adrian Dymorz from #87784 the issue disapperead so the issue has been closed and then reappeared again. I've recently also ran into this problem. If you replace the following code like Adrian Dymorz described it works again. But it's not peramanent since the fix can be overwritten by an update. Unfortunatelly I'm not sure how to write a patch for this issue.
Here is the code that has to be replaced in file:
https://github.com/TYPO3/TYPO3.CMS/blob/189e065f957762283aa8d790c4a1c19d763c0eb8/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php#L4454
Old code:
$theImage = GeneralUtility::makeInstance(FilePathSanitizer::class)->sanitize((string)$file);
New code:
if ($file instanceof FileReference) {
$fileAsString = $file->getForLocalProcessing(false);
} else {
$fileAsString = $file;
}
$theImage = GeneralUtility::makeInstance(FilePathSanitizer::class)->sanitize((string)$fileAsString);
Thanks to Adrian Dymorz for the solution
Updated by Jan Epper over 3 years ago
- Related to Bug #87784: ClickEnlargeViewHelper causes error "Object of class FileReference could not be converted to string in TemplateService.php line 1441" added
Updated by B. Kausch about 3 years ago
Is there any chance this can be fixed? This bug is a nightmare, breaking the entire site after an upgrade...