我已经在Fortrabbit服务器上安装了一个Laravel应用程序。我可以做以下工作
$ ssh user@server
$ cd htdocs
$ php artisan migrate效果很好。
但我正试着用特使来完成这样的任务。所以我做了一个简单的任务:
@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连接使用Fortrabbit接口中设置的ENV变量的凭据。如果我将SSH放入服务器并执行env,那么所有变量都会按应有的方式列出。但在做的时候
$ ssh user@server env我只得到一小部分Fortrabbit服务器ENV变量。
我不知道错误的原因是什么,在询问谷歌的时候,我也找不到任何东西。有人能把这件事弄清楚吗?非常感谢。
发布于 2014-04-24 09:38:19
正如@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发布于 2014-04-23 12:07:13
我建议检查一下你的环境污染是否如预期的那样有效。
$ php artisan env如果不是,您可以强制执行手工命令的环境,如:
$ php artisan migrate --env=test_serverhttps://stackoverflow.com/questions/23242937
复制相似问题