Посланник Ларавела на фортраббите
Я установил приложение 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