Ich habe eine Laravel 5.2 App, die ein paar E-Mails sendet, wenn ein Benutzer ein Produkt kauft. Die E-Mail-Ansicht enthält Verweise auf einige Bilder, etwa so:Laravel 5.2 Warteschlange ignoriert .env
<img src="{{ asset($purchase->image) }}">
Dies funktioniert in allen drei Umgebungen Ich habe - lokal, Inszenierung und Produktion. asset()
erstellt die vollständig qualifizierten URLs ordnungsgemäß zu dem entsprechenden Image, wobei die konfigurierten APP_URLs in jeder Umgebung verwendet werden.
Ich entschied mich für die Verwendung der Laravel queues, um die E-Mails zu senden.
- änderte ich den
QUEUE_DRIVER
in.env
zudatabase
php artisan queue:table
php artisan migrate
php artisan queue:listen
- Changed
\Illuminate\Support\Facades\Mail::send(
zu
\Illuminate\Support\Facades\Mail::queue(
und machte einen Testkauf. Der Prozess funktioniert, die Mail wird gesendet, aber die Bild-URLs in den gelieferten E-Mails sind falsch. Es scheint, dass meine konfigurierte APP_URL nicht abgeholt wird.
.env
APP_URL=http://localhost/path/to/app
config/app.php
'url' => env('APP_URL', 'http://localhost'),
Die URLs asset()
per E-Mail erzeugt sind:
http://localhost/images/foo.jpg
, die falsch ist, sie sollte sein:
http://localhost/path/to/app/images/foo.jpg
Es sieht aus wie mit Warteschlangen der APP_URL
definiert in meinem .env
nicht gesehen, so dass der Ausfall von http://localhost
verwendet wird. Wenn Sie keine Warteschlangen verwenden, funktioniert derselbe Code einwandfrei.
Das einzige, was mir einfällt, ist, dass die CLI PHP-Umgebung, die die Warteschlange behandelt, sich irgendwie von der Apache PHP-Umgebung unterscheidet, aber ich kann mir nicht vorstellen, welcher Unterschied .env
ignoriert.
Ich fand eine similar question von jemandem mit Laravel 4.2, 2 Jahren, ohne Antwort. Ich fand ein paar andere ähnliche Referenzen, aber keine Lösung. Wer hat das gesehen oder Anregungen?
Ich weiß, es ist dumm. Aber wie wäre es mit 'env ('APP_URL'). '/ Images /'.$ purchase-> image' p.s. es ist nur Workaround, vielleicht für Kommandozeilen-Ausführungen benötigt es andere Env-Datei? Können Sie den Code der Assets überprüfen? – num8er
In der Tat existiert dieses Problem noch: https://github.com/laravel/framework/issues/14139 – num8er
Danke @ num8er, mein Googling hat dieses Problem nicht angezeigt. Lass es mich ein bisschen genauer ansehen ... ja, ich kann Abhilfe schaffen, vielleicht kann ich das ja auch nicht. Es ist seltsam, dass es nicht häufiger ist, aber ich bin sicherlich nicht die einzige Person, die 'asset()' in E-Mails verwendet. –