Я пытаюсь запустить функцию PHP на Lambda, используя Serverless Framework (http://blog.zerosharp.com/the-serverless-framework-and-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. Итак, я отредактировал файл docker следующим образом: https://gist.github.com/Delfins/23aadc9e418c48e88c4a7491641dc0c9, но все равно никаких отличий.
Это ошибка, которую я получаю:
serveless_pn @ ip-10-0-1-146: ~ / site / serverless-php $ sls вызывает --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)",
"Сокет. (Internal / child_process.js: 342: 11)",
"emitOne (events.js: 96: 13)",
"Socket.emit (events.js: 188: 7)",
"Pipe._handle.close [as _onclose] (net.js: 497: 12)"
]
}
Есть идеи? Спасибо!