我正在尝试使用无服务器框架(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)” ] }
有什么主意吗?谢谢!