gpt4 book ai didi

php - Laravel - Artisan 给出了错误的基本 URL

转载 作者:可可西里 更新时间:2023-11-01 13:08:36 27 4
gpt4 key购买 nike

我的 app/config/app.php 有

'url' => 'http://dev.domain.com/something/somethingElse'

然后我有一个可以从应用程序和 artisan 命令调用的函数。但是 URL::route('myRoute') 返回不同的结果。当从应用程序调用时,它返回 http://dev.domain.com/something/somethingElse/myRoute,但在 artisan 命令 http://dev.domain.com/myRoute.

URL::to 具有相同的行为。

注意:我没有为可能覆盖全局环境的其他环境定义任何其他 app.php 文件。

知道为什么会这样吗?谢谢!

最佳答案

Laravel 生成的 URL 由许多部分组成:

  • 方案:http://https://
  • 主机:dev.domain.comlocalhost
  • 基础:something/somethingElse(网络服务器上的子目录)
  • Tail: myRoute, (Laravel 路由参数)

然后将这些部分连接起来形成 URL。

最终,Laravel 使用 $_SERVER 请求变量生成 URL。 Symfony\Component\HttpFoundation\Request 中的函数 prepareBaseUrl() 最终用于确定 URL 的base 部分。

当您通过 Web 浏览器发出请求时,请求会转到 ~/public/index.php 并且必要的 $_SERVER 变量会填充正确的信息让 Laravel 填充 URL 的 base 部分。

但是,当您在命令行上使用 Artisan 发出请求时,请求会转到 ~/artisan 脚本。这意味着 $_SERVER 变量的填充方式不同,Laravel 无法确定 URL 的 base 部分;相反,它返回一个空字符串 ''

据我所知,Laravel 团队似乎没有兴趣让应用程序在子目录中开箱即用,例如Bugfix: domain routing for subfolder .

我最终按照@medowlock 描述的方式解决了这个问题,我的脚本将从命令行调用,例如:

Config::get('app.url') 。 URL::route('route.name', ['parameter'=>'value'], false)

这将连接 app/config/app.php 中设置的应用程序 URL 和相对 URL 路由。

关于php - Laravel - Artisan 给出了错误的基本 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25750604/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com