PHP без сервера (на AWS Lambda) - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь запустить функцию 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)" ] }

Есть идеи? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...