LoginSignup
4
1

More than 5 years have passed since last update.

【Laravel】URLヘルパーを画面とバッチ(コンソール)との両方で使う場合値がずれることがある

Last updated at Posted at 2018-01-18

Laravel5.5にて確認。

URL生成するヘルパー関数について。
* url()
* route()
など

遭遇したケース

メールを送信する機能があり、メール本文にはサイトのURLが記載される。

メールは画面の操作をトリガーにしても送信されることもあるしバッチ処理から送信されることもある。

画面操作経由で送信されたメールとバッチ処理経由で送信されたメールとで、同じ箇所で作られているはずのURLの値が異なり、原因を調査していた。

url('/login') の出力例

→URLのベース部分が異なる

URLは url()route() といったヘルパー関数経由で作っていた。

画面経由の場合

URLのベース部分は $_SERVER['HTTP_HOST'] の値になる

バッチ(コンソールコマンド)経由の場合

URLのベース部分は \Config::get('app.url') の値になる


画面経由とバッチ経由との両方で使う処理でURLヘルパーを使う場合値が一定にならないので、注意するか・ヘルパーを使わないほうがよさそう。

参考

URLヘルパーがURLのベース部分を作っている箇所の処理を追っていくと Symfony\Component\HttpFoundation\Request::getHost() あたりにいきつく。

https://github.com/symfony/http-foundation/blob/master/Request.php#L1137

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1