带有无服务器的PHP(在AWS Lambda上):PDO连接问题

时间:2019-01-19 12:01:13

标签: php pdo lambda serverless

我正在尝试使用无服务器框架(http://blog.zerosharp.com/the-serverless-framework-and-php/)在Lambda上运行PHP函数。 一切正常,除非我尝试初始化PDO MySql连接。如果这样做,则在本地进行测试会起作用,而在远程进行测试则会立即失败。

这是我的代码(非常简单):

<?php
$result = updateArxivar();

printf(json_encode($result));

function updateArxivar(){
    $db_host = "my_host";
    $db_name = "my_dbname";
    $db_username = getenv("FLY_DATABASE_USER");
    $db_password = getenv("FLY_DATABASE_PW");
    try{ 
        $conn = new PDO('mysql:host='.$db_host.';dbname='.$db_name, 
$db_username, $db_password);
    }catch(Exception $e){
        fwrite(STDERR, "Hi\n");
        return 0;
    }
    return 1;
}

似乎Lambda env未配置为支持PDO。因此,我这样编辑了dockerfile:https://gist.github.com/Delfins/23aadc9e418c48e88c4a7491641dc0c9,但仍然没有区别。 这是我得到的错误:

serveless_pn @ ip-10-0-1-146:〜/ site / serverless-php $ sls invoke --function hello {     “ errorMessage”:“进程退出,状态代码为非零255”,     “ errorType”:“错误”,     “堆栈跟踪”: [         “ ChildProcess。(/var/task/handler.js:30:23)”,         “ emitTwo(events.js:106:13)”,         “ ChildProcess.emit(events.js:191:7)”,         “ maybeClose(internal / child_process.js:886:16)”,         “套接字。(内部/child_process.js:342:11)”,         “ emitOne(events.js:96:13)”,         “ Socket.emit(events.js:188:7)”,         “ Pipe._handle.close [作为_onclose](net.js:497:12)”     ] }

有什么主意吗?谢谢!

0 个答案:

没有答案