You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Lambda Layer中导入PHP cURL模块问题求助

问题诊断与操作指引

你收到的Call to undefined function curl_init()报错,核心原因是当前使用的PHP Lambda运行环境没有内置cURL扩展,你之前引用的默认PHP73公共层未打包cURL模块,需要自定义Lambda Layer添加扩展解决,具体操作步骤如下:


1 编译cURL扩展并打包自定义层

必须在和Lambda运行环境一致的Amazon Linux 2环境下编译扩展,推荐用本地Docker模拟运行时环境操作:

  • 拉取对应PHP版本的Lambda运行时容器镜像,进入容器终端
  • 安装编译依赖包,执行命令:yum install -y curl-devel php-devel gcc make
  • 编译cURL扩展:进入PHP扩展源码目录,依次执行phpize、./configure、make、make install
  • 按Lambda层要求整理文件结构:
    • 创建层级目录/opt/php/7.3/lib/php/extensions/no-debug-non-zts-20180731/,将编译生成的curl.so文件放入该目录
    • 创建/opt/php/7.3/conf.d/目录,新建curl.ini文件写入内容:extension=curl.so
  • 将整个opt目录打包为zip文件,注意zip根目录直接是opt文件夹,不要嵌套多余的外层目录

2 上传层并绑定到Lambda函数

  • 进入AWS Lambda控制台,左侧菜单栏选择「层」,点击「创建层」,上传刚才打包的zip文件,选择兼容的运行时和对应架构(x86/Arm)
  • 回到你的PHP Lambda函数配置页,找到「层」模块点击「添加层」,选择你刚创建的自定义层后保存配置

3 修正代码隐含问题

你当前代码中cURL配置项的键加了引号,属于错误写法,curl_setopt_array无法识别字符串格式的配置常量,需要修改为如下格式:

$curl_options = array(
    CURLOPT_URL => $url,
    CURLOPT_HEADER => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_USERAGENT => 'ezPay',
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSL_VERIFYHOST => false,
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => $parameter
);

完成上述操作后重新部署Lambda,即可正常调用cURL相关函数,不会再报未定义错误。

内容的提问来源于stack exchange,提问作者GoRo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:18:02