2

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 に問い合わせても何も見つかりませんでした。誰かがこれについて少し光を当てることができますか? どうもありがとう。

4

2 に答える 2

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
于 2014-04-24T09:38:19.260 に答える