首页 > 解决方案 > 将 cURL 模块导入 AWS Lambda

问题描述

我是使用 AWS 的初学者。我目前在将 PHP cURL 模块导入 Lambda 层时遇到问题。

我尝试按照 GitHub https://github.com/stackery/php-lambda-layer上的说明设置图层,但我只修改了 arn:arn:aws:lambda:<region>:887080169480:layer:php73:3到我的区域。我不知道在哪里输入这些命令来添加扩展。

我还按照在线教程https://www.youtube.com/watch?v=MipjLaTp5nA&t=800s&ab_channel=BeABetterDev一步步部署了我的堆栈,但效果不佳。

是否有任何可能的指示让我遵循或我可以参考的任何材料?

我正在尝试在由 API 网关触发的 Lambda 中运行以下代码。

<?php
//------------------------Main--------------------------------------------------
$post = file_get_contents('php://input');
$url = 'https://cinv.ezpay.com.tw/Api/invoice_issue';

$result = curl_work($url, $post);

//------------------------Function----------------------------------------------
function curl_work($url = '', $parameter = '')
{
    $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
);
    $ch = curl_init();
    curl_setopt_array($ch, $curl_options);
    $result = curl_exec($ch);
    $retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $curl_error = curl_errno($ch);
    curl_close($ch);
    $return_info = array(
        'url' => $url,
        'sent_parameter' => $parameter,
        'http_status' => $retcode,
        'curl_error_no' => $curl_error,
        'web_info' => $result
    );
    return $return_info;
}
?>

我已经用 Postman 进行了测试,并得到了以下错误响应。

<br />
<b>Fatal error</b>: Uncaught Error: Call to undefined function curl_init() in /var/task/index.php:22
Stack trace:
#0 /var/task/index.php(6): curl_work('https://cinv.ez...', '')
#1 {main}
thrown in <b>/var/task/index.php</b> on line <b>22</b><br />

标签: phpamazon-web-servicesaws-lambdaphp-curlawsdeploy

解决方案


你能试试这个吗

$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
);

推荐阅读