【问题标题】:Laravel 5.5 APP_URL not changingLaravel 5.5 APP_URL 没有改变
【发布时间】:2019-12-10 14:01:44
【问题描述】:

我正在尝试更改 {{ url('images/image.png') }}{{ asset('images/image.png') }} 的路径输出根据我的阅读,听起来我只需要在我的 .env 文件中设置 APP_URL 就可以了。好吧,不幸的是,事实并非如此。我在我的 .env 文件中设置了APP_URL=http://localhost。我还在我的 config/app.php 文件中设置了'url' => env('APP_URL', 'http://broken.af')。此外,我还尝试在两个位置设置 ASSET_URL,结果相同。我还运行了artisan cache:clearartisan config:clearartisan config:cache。为了更加确定,我还尝试重新启动服务器。出于某种原因,Laravel 一直使用服务器为这些值配置的主机名。

不是骗子,我们不是在谈论路由路径,我们是在谈论 url 和资产函数,而 APP_URL 和 ASSET_URL 没有做任何事情。

【问题讨论】:

  • 你应该寻找的是ASSET_URL而不是APP_URL
  • ASSET_URL 记录在哪里...
  • 你应该可以在你的env文件和config/app.php中设置它
  • 我能在上面找到的唯一文档是在laravel.com/docs/5.8/helpers 文档下。好像没有效果。
  • 好的。我用5.8。如果您将所有资产都放在公用文件夹中,那么您应该不会遇到资产问题,除非您将它们移动到其他位置

标签: php laravel


【解决方案1】:

如果这对某人有帮助,此代码对我有用:

$url = env('APP_URL').Storage::url($file->path);

这是我之前保存文件的方式:

$file->path = $request->file("file")->store("public");

我找到了这个答案here

p.d.不要忘记做符号链接,如文档提及here

php artisan storage:link

【讨论】:

    【解决方案2】:

    我将继续发布我的问题的答案。如果不使用UrlGenerator::forceRootUrl,必然会回退到Request::root(),实现如下:return rtrim($this->getSchemeAndHttpHost().$this->getBaseUrl(), '/');

    我不确定 ASSET_URL 或 SITE_URL 的作用,如果有的话。这些环境变量绝对不会在urlasset 函数中使用。这在 Laravel 的后续版本中似乎没有改变。

    我能够找到使这些变量起作用的唯一方法是在 RouteServiceProvider::boot() 中手动读取它们,然后调用 forceRootUrl。

        public function boot()
        {
            parent::boot();
    
            /** @var UrlGenerator $url */
            $url = $this->app['url'];
    
            // Force the application URL
            $url->forceRootUrl(config('app.url'));
        }
    

    痕迹:

    1. https://github.com/illuminate/routing/blob/master/UrlGenerator.php#L204
    2. https://github.com/illuminate/routing/blob/master/UrlGenerator.php#L492
    3. https://github.com/illuminate/routing/blob/master/UrlGenerator.php#L494
    4. https://github.com/illuminate/http/blob/master/Request.php#L89

    【讨论】:

    • 谢谢你拯救我的周末。我相信如果 Laravel 应用程序在投入生产时配置错误,则需要执行此步骤:开发人员忘记了启用 APP_URL 的内容(如您所见,我不是 Laravel 专家)。
    【解决方案3】:

    如果您的所有资产都在默认公用文件夹中,请在您的.env 文件中为您的APP_URL 使用完全限定域名(包括安全协议)。示例:

    APP_URL=https://broken.af
    

    也为您的config/app.php 文件使用相同的内容:

    'url' => env('APP_URL', 'https://broken.af'),
    

    【讨论】:

    • 如果我在最初的帖子中不清楚,尽管设置了这些值,但它并没有使用它们。
    【解决方案4】:

    当您尝试获取资产时,在您的情况下,它是一个图像,使用 asset() laravel 助手是正确的,

    更多信息,请查看laravel method-asset helper

    【讨论】:

    • 因此资产和网址都返回上述相同的内容。
    • 不,资产可以是另一个 url,可能是 s3 或任何存储
    • 我知道他们“可以”,我是说即使在 .env 和 config/app.php 中配置了 APP_URL 和 ASSET_URL 也与我的帖子中概述的结果相同......我我真的很茫然。
    • 您的图片文件夹在公共文件夹下?
    猜你喜欢
    • 2019-09-05
    • 2021-12-16
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 2018-12-17
    • 2018-04-20
    • 1970-01-01
    • 2018-01-21
    相关资源
    最近更新 更多