如何在基于Bref的AWS Lambda Laravel环境中安装GD Library
问题原因
- 仅给
artisan函数配置了GD扩展层,处理Web请求的web函数未配置任何GD相关依赖 web函数使用自定义容器镜像部署,Bref的层(layer)配置对容器镜像部署的Lambda函数不生效,需直接在镜像构建流程中安装GD扩展- 扩展层版本与实际PHP版本不匹配:本地使用PHP 7.4,但配置的是PHP 8.0对应的GD层,即使配置到对应函数也会因版本不符无法加载
解决方案
根据你的部署方式二选一即可:
方案1:继续使用自定义容器镜像部署
直接在Laravel镜像对应的Dockerfile中添加GD扩展安装逻辑,示例如下(基于bref官方PHP基础镜像):
RUN apt-get update && apt-get install -y \ libpng-dev \ libjpeg-dev \ libfreetype6-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j$(nproc) gd
修改后重新构建镜像再执行部署即可。
方案2:切换为层部署方式
如果你不想维护自定义容器镜像,将web函数改为Bref层部署,同时统一PHP版本(以下以你本地使用的PHP 7.4为例):
修改serverless.yml配置如下:
plugins: - ./vendor/bref/bref - ./vendor/bref/extra-php-extensions functions: web: handler: public/index.php timeout: 28 layers: - ${bref:layer.php-74-fpm} - ${bref-extra:gd-php-74} events: - httpApi: '*' artisan: handler: artisan timeout: 120 layers: - ${bref:layer.php-74} - ${bref:layer.console} - ${bref-extra:gd-php-74}
修改完成后重新执行sls deploy --stage dev部署即可。
内容的提问来源于stack exchange,提问作者ニホニウム
相关产品推荐
相关产品推荐

