Edit report at https://bugs.php.net/bug.php?id=81217&edit=1
ID: 81217
Comment by: mlocati at gmail dot com
Reported by: mlocati at gmail dot com
Summary: imageavif() fails - Segmentation Fault or No codec
available
Status: Open
Type: Bug
Package: GD related
Operating System: Debian Buster and Alpine Linux
PHP Version: 8.1.0alpha2
Block user comment: N
Private report: N
New Comment:
So, it seems that the root cause of this issue is that the libaom versions currently provided by
Debian APT and Alpine APK systems are not functional (AFAIK they are compiled without the required
BUILD_SHARED_LIBS=1, but I may be wrong here).
So, in order to make imageavif() and imagecreatefromavif() work, you need to do everything by hand:
1. compile and install libaom
2. compile and install libdav1d (to decode AV1)
3. compile and install libyuv (used by libavif to better handle YUV decoding)
4. compile and install libavif
5. compile and install the gd PHP extension (with the --with-avif flag)
For an example about how that can be done in Debian (so, Ubuntu too) and Alpine, you can take a look
at https://github.com/mlocati/docker-php-extension-installer
Previous Comments:
------------------------------------------------------------------------
[2021-09-28 00:05:06] apostnikov at gmail dot com
I filed MR to upgrade libavif in Alpinelinex 3.14 but looks it needs major version bump for libaom,
meantime it should be working in alpine:edge
------------------------------------------------------------------------
[2021-09-27 17:47:27] morss at google dot com
I think this is the same thing that Pierre kindly fixed here:
https://github.com/libgd/libgd/issues/770
------------------------------------------------------------------------
[2021-08-26 14:23:18] pear at laurent-laville dot org
This issue is still live with version 8.1.0beta3
Same test procedure, but used docker image php:8.1.0beta3-fpm-buster
------------------------------------------------------------------------
[2021-07-02 09:39:39] cmb@php.net
Hmm, I wonder whether we need to explicitly configure a codec for
libavif on some platforms. Apparently, pkg-config doesn't do this
here.
------------------------------------------------------------------------
[2021-07-01 15:29:57] mlocati at gmail dot com
I tried recompiling gd on Debian Buster after adding libaom:
apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev libxpm-dev libwebp-dev
libavif-dev libaom-dev
But
php -r 'var_dump(imageavif(imagecreatetruecolor(8, 8), "/tmp/test"));'
still gives a Segmentation fault
I also tried recompiling gd on Alpine Linux 3.14 after adding aom:
apk add freetype-dev libjpeg-turbo-dev libpng-dev libxpm-dev libwebp-dev libavif-dev aom-dev
but
php -r 'var_dump(imageavif(imagecreatetruecolor(8, 8), "/tmp/test"));'
still outputs
Warning: imageavif(): avif error - Could not encode image: No codec available in Command line code
on line 1
bool(true)
(and the generated file is empty)
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=81217
--
Edit this bug report at https://bugs.php.net/bug.php?id=81217&edit=1