Laravel特使在fortrabbit

时间:2014-04-23 11:29:12

标签: laravel ssh fortrabbit laravel-envoy

我在Fortrabbit服务器上设置了一个Laravel应用程序。我可以做以下

$ 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连接使用Fortrabbit接口中设置的ENV变量的凭证。如果我通过SSH连接到服务器并执行env,则所有变量都按原样列出。但是在做的时候

$ ssh user@server env

我只获得Fortrabbit服务器ENV变量的一小部分。

我无法弄清楚错误的原因是什么,而且在向Google询问时我也找不到任何东西。有人可以对此有所了解吗?非常感谢。

2 个答案:

答案 0 :(得分:1)

我建议检查您的环境检测是否按预期工作。

$ php artisan env

如果没有,你可以强制执行工匠命令的环境,如下:

$ php artisan migrate --env=test_server

答案 1 :(得分:1)

正如@ukautz所说,会话脚本不是由envoy执行的,这就是为什么你的某些环境变量缺失的原因。

这就是我的所作所为:

@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