Laravel没有得到APP_URL参数,当我们尝试在刀片文件中使用url函数时

slsn1g29  于 2023-06-30  发布在  其他
关注(0)|答案(2)|浏览(152)

我正面临着一个奇怪的情况,只要看看下面的代码在一个刀片文件,和它的输出

刀片

{{ url('xero_invoice_authorised') }}</br>
config app url - {{ config('app.url') }}</br>
env app url - {{ env('APP_URL') }}
输出
http://xxxx/xero_invoice_authorised
config app url - https://xxxx/
env app url - https://xxxx/

url()返回的URL为http:,但应该是https:
系统位于Docker容器中。
我已经运行了所有命令来清除该高速缓存、视图、路由,甚至运行了optimize命令。
谁能告诉我我的配置出了什么问题?或者有什么方法可以解决这个问题?
我需要{{ url('') }}来返回.env文件中的APP_URL

jdg4fx2g

jdg4fx2g1#

完全没有错误,它正按预期工作。
首先,永远不要在config文件夹之外使用env(),因为当你运行php artisan optimizephp artisan config:cache时,env()总是会返回null。更多信息请参见文档。如果这只是一个测试,我能理解,但要记住。
其次,url()总是返回http而不是https。如果需要https,则必须使用secure_url()。查看url()secure_url()的文档。
第三,只是为了向你展示它是如何工作的,这里是url()的官方源代码,UrlGenerator是处理http://https://的,你可以尝试调试它正在阅读的内容,并检查为什么它使用insecure而不是另一个。

f4t66c6m

f4t66c6m2#

在不同的尝试找到一个工作方法后,我用以下内容更新了AppServiceProvider,以在生产环境中强制使用HTTPS。文件:app/Providers/AppServiceProvider.php

public function boot()
    {
            if (env('APP_ENV') === 'production') {
                URL::forceScheme('https');
            }
    }

相关问题