如何在MAMP中为PHP 8.2添加AVIF支持?
解决MAMP 6.8(PHP 8.2)中GD扩展缺少AVIF支持的问题
当前MAMP自带的PHP 8.2 GD扩展未编译AVIF支持,导致imageavif()函数未定义,gd_info()输出中AVIF Support字段为空。以下是两种可行的解决方法:
方法一:替换带AVIF支持的GD扩展文件
- 找到MAMP中PHP 8.2的扩展目录,路径示例:
/Applications/MAMP/bin/php/php8.2.*/lib/php/extensions/no-debug-non-zts-20220829/(将php8.2.*替换为实际的子版本号,如php8.2.15) - 备份原有
gd.so文件:在终端进入上述目录后执行cp gd.so gd.so.bak - 获取带有AVIF支持的
gd.so文件(可自行编译或使用可信的预编译版本,确保与MAMP的PHP 8.2版本兼容) - 将新的
gd.so替换到该目录中 - 重启MAMP的Apache服务,执行
gd_info()验证AVIF Support是否变为1
方法二:手动编译GD扩展(适合有编译经验的用户)
- 安装编译依赖:使用Homebrew执行
brew install libavif libpng libjpeg freetype - 下载对应版本的PHP 8.2源码包并解压,进入源码内的
ext/gd目录 - 调用MAMP自带的phpize工具:执行
/Applications/MAMP/bin/php/php8.2.*/bin/phpize(替换为实际PHP版本路径) - 配置编译参数:
./configure --with-php-config=/Applications/MAMP/bin/php/php8.2.*/bin/php-config --with-gd --with-freetype --with-jpeg --with-webp --with-avif - 编译并安装:执行
make && make install - 重启MAMP服务,验证AVIF支持是否生效
注意:替换或编译扩展时需确保版本兼容性,若替换后服务启动失败,可恢复备份的
gd.so文件。
内容的提问来源于stack exchange,提问作者Alan
相关产品推荐
相关产品推荐

