Посланник Ларавела на фортраббите

Я установил приложение Laravel на сервере Fortrabbit. Я могу сделать следующее

$ ssh user@server
$ cd htdocs
$ php artisan migrate

Который работает отлично.

Но я пытаюсь использовать Envoy для подобных задач. Итак, я сделал простую задачу:

@servers(['test' => 'user@server'])

@task('task:test', ['on' => 'test'])
    cd htdocs
    php artisan migrate
@endtask

Однако при этом я сталкиваюсь со следующей проблемой:

$ envoy run task:test

[user@server]: \(><)/ Welcome to the rabbit hole. \(><)/
[user@server]: [PDOException] SQLSTATE[HY000] [2002] No such file or directory

Возможно, стоит отметить, что соединение db использует учетные данные из переменных ENV, установленных в интерфейсе Fortrabbit. Если я SSH на сервер и сделать env, все переменные перечислены в порядке. Но когда делаю

$ ssh user@server env

Я получаю лишь небольшую часть переменных ENV сервера Fortrabbit.

Я не могу понять, что может быть причиной ошибки, и я не смог ничего найти, когда спрашивал Google. Кто-нибудь может пролить немного света на это? Большое спасибо.

2 ответа

Решение

Как сказал @ukautz, сценарии сеанса не выполняются посланником, поэтому некоторые переменные среды отсутствуют.

Вот что я сделал:

@servers(['dev'=>"<<user@server>>"])
@task('list')
    . /etc/profile.envvars
    env
@endtask

Это показало все переменные ENV, включая те, которые вы установили на приборной панели!

Ваш скрипт должен работать с этим:

@servers(['test' => 'user@server'])
@task('task:test', ['on' => 'test'])
    . /etc/profile.envvars
    cd htdocs
    php artisan migrate
@endtask

Я предлагаю проверить, работает ли ваша среда в соответствии с ожиданиями.

$ php artisan env

Если нет, вы можете принудительно настроить среду для команд ремесленников, например так:

$ php artisan migrate --env=test_server
Другие вопросы по тегам