私は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
に
.env
でQUEUE_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が見つかりました。私はいくつかの類似の参照を見つけましたが、解決策はありませんでした。誰でもこれを見たり、何か提案がありますか?
私はそれがばかだと知っています。しかし、 'env( 'APP_URL') '/ images /'.$ purchase-> image' p.s.それはちょうど回避策です、多分それは異なるenvファイルが必要なコマンドラインの実行のために? 'asset'メソッドのコードをチェックできますか? – num8er
実際にこの問題はまだ存在します:https://github.com/laravel/framework/issues/14139 – num8er
ありがとうございます@ num8er、私のグーグルは問題を起こさなかった。私はもう少しそれをチェックしてみましょう...はい、私は回避策をすることができます、実際には多分それは私ができることです。しかし、もっと一般的ではないことは奇妙なことです。確かに私は待ち行列に入れられた電子メールで 'asset() 'を使う唯一の人ではありませんか? –