fast-image-size
fast-image-size copied to clipboard
Memory leak with PHP 8.1
It appears that the loaded images remain in memory even when the FastImageSize
object is unset.
PHP 8.1.13
Zend Engine v4.1.13
Zend OPcache v8.1.13
Loaded extensions:
zend_extension=opcache.so
extension=pdo.so
extension=pdo_pgsql.so
extension=pgsql.so
extension=xml.so
extension=calendar.so
extension=ctype.so
extension=curl.so
extension=dom.so
extension=exif.so
extension=ffi.so
extension=fileinfo.so
extension=ftp.so
extension=gd.so
extension=gettext.so
extension=iconv.so
extension=imagick.so
extension=intl.so
extension=mbstring.so
extension=phar.so
extension=posix.so
extension=readline.so
extension=shmop.so
extension=simplexml.so
extension=sockets.so
extension=sysvmsg.so
extension=sysvsem.so
extension=sysvshm.so
extension=tokenizer.so
extension=xmlreader.so
extension=xmlwriter.so
extension=xsl.so
extension=zip.so
Code example that demonstrates the leak:
for ($i = 0; $i < ENOUGH_TO_EXCEED_RAM_LIMIT; $i++) {
$mem = memory_get_usage();
$FastImageSize = new \FastImageSize\FastImageSize();
$path = "path/to/image.jpg";
$imageSize = $FastImageSize->getImageSize($filePath);
unset($FastImageSize);
unset($imageSize);
echo "leak: " . memory_get_usage() - $mem . " bytes<br>";
}
This code terminates with the following fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 790528 bytes) in /var/www/vendor/marc1706/fast-image-size/lib/FastImageSize.php on line 189