Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel action()帮助器忽略APP_URL环境变量_Php_Laravel_Laravel 5.2 - Fatal编程技术网

Php Laravel action()帮助器忽略APP_URL环境变量

Php Laravel action()帮助器忽略APP_URL环境变量,php,laravel,laravel-5.2,Php,Laravel,Laravel 5.2,在我的.env文件中,我将应用程序URL设置如下: APP_URL=https://example.com 但是,无论我在哪里使用action()helper生成URL,路径都是使用http而不是https创建的 我不明白为什么会这样。站点本身在SSL上运行。我还尝试了使用“https”设置BASE\u URL环境变量-没有运气 拉威尔不应该尊重我的基本URL吗 Laravel版本:5.2 对于action()帮助程序,以及使用HTML和Forms Laravel Collective包生成表

在我的.env文件中,我将
应用程序URL
设置如下:

APP_URL=https://example.com
但是,无论我在哪里使用
action()
helper生成URL,路径都是使用http而不是https创建的

我不明白为什么会这样。站点本身在SSL上运行。我还尝试了使用“https”设置
BASE\u URL
环境变量-没有运气

拉威尔不应该尊重我的基本URL吗

Laravel版本:5.2

对于
action()
帮助程序,以及使用HTML和Forms Laravel Collective包生成表单(包括
action
属性)时,都会发生这种情况。

不幸的是
action()
不是基于app.url,而是基于您的请求根目录,因此如果您正在浏览https,它应该为您提供一个基于https方案的url。但你可以通过以下方式强迫它成为你所需要的:

app('url')->forceRootUrl(env('APP_URL'));

我建议您对服务提供商执行此操作。

此外,除了Antonio在其中提出的建议外,您还可以使用forceSchema()方法:

AppServiceProvider.php

public function boot() {

    if (App::environment('production')) {
        URL::forceSchema('https');
    }
}

请注意,代码使用Facades,但您也可以使用全局
app()
helper。

关于
config/app.php
?我的是
'url'=>env('APP\uurl','http://localhost“),
@Thomas是的,设置与此完全相同。然后将其更改为
'url'=>env('APP_url',”https://example.com),
@Thomas试过了,没有改变。只要我在.env中有
APP\u URL
,这个回退值就会被忽略。传入连接安全吗?Laravel可能无法检测SSL。尝试将其放在AppServiceProvider的引导方法中:URL::forceSchema('https');