2017-01-25 9 views
2

私はLaravel 5.2アプリケーションを使用しています。これはユーザーが製品を購入したときにいくつかの電子メールを送信します。メールビューのようなので、いくつかの画像への参照が含まれていますLaravel 5.2キューは.envを無視します

<img src="{{ asset($purchase->image) }}"> 

これは私が持っているすべての3つの環境で正常に動作します - ローカル、ステージング、および生産。 asset()は、各環境で設定されたAPP_URLを使用して、適切なイメージへの完全修飾URLを正しく構築します。

私はLaravel queuesを使用して電子メールを送信することにしました。

  • 私はdatabase

    012に

    \Illuminate\Support\Facades\Mail::send(
    

    を変更

  • ​​
  • php artisan migrate
  • php artisan queue:listen
  • .envQUEUE_DRIVERを変更

    \Illuminate\Support\Facades\Mail::queue(
    

とテスト購入を行いました。プロセスは機能し、メールは送信されますが、配信されたメールの画像URLは間違っています。設定されたAPP_URLが選択されていないようです。

.env

APP_URL=http://localhost/path/to/app 

のconfig/app.php

'url' => env('APP_URL', 'http://localhost'), 

asset()は私の電子メールで生成したURLは以下のとおりです。

間違ってい
http://localhost/images/foo.jpg 

、彼ら次のようにする:

http://localhost/path/to/app/images/foo.jpg 

それは見ていない私の.envで定義されている使用してキューAPP_URLのように見えるので、http://localhostのデフォルトが使用されます。キューを使用しないで、同じコードが正常に動作します。

私が考えることができるのは、キューを処理しているCLI PHP環境がApache PHP環境とは多少異なる点ですが、どのような違いが無視されるのか想像できません。

2年前にLaravel 4.2を使用している人から回答がありませんでした。similar questionが見つかりました。私はいくつかの類似の参照を見つけましたが、解決策はありませんでした。誰でもこれを見たり、何か提案がありますか?

+0

私はそれがばかだと知っています。しかし、 'env( 'APP_URL') '/ images /'.$ purchase-> image' p.s.それはちょうど回避策です、多分それは異なるenvファイルが必要なコマンドラインの実行のために? 'asset'メソッドのコードをチェックできますか? – num8er

+0

実際にこの問題はまだ存在します:https://github.com/laravel/framework/issues/14139 – num8er

+0

ありがとうございます@ num8er、私のグーグルは問題を起こさなかった。私はもう少しそれをチェックしてみましょう...はい、私は回避策をすることができます、実際には多分それは私ができることです。しかし、もっと一般的ではないことは奇妙なことです。確かに私は待ち行列に入れられた電子メールで 'asset() 'を使う唯一の人ではありませんか? –

答えて

0

解決策を見つけるために@ num8erに感謝します。

これはsymfonyのから来てLaravelにおける既知の問題です。この問題を回避するには、@のnum8erはコメントで提案、およびビューでハードコード資産パスとして行うのではなく、asset()を使用することですhttps://github.com/laravel/framework/issues/14139

config('app.url') . '/images/' . $purchase->image