在 config/session.php 中使用辅助函数会导致所有 php artisan 命令/作曲家出错

Using a helper function in the config/session.php gives an error with all php artisan commands / composer

在 session.php 中,我使用辅助函数 url() 创建动态域名。这样,当我移动到真实服务器时,我就不必更改域名了。它看起来像这样:

'domain' => url(''),

在浏览器中一切正常,但是当我从终端使用任何 php artisan 或作曲家命令时,它会给我这个错误:

PHP Fatal error:  Uncaught ReflectionException: Class log does not exist in /vendor/laravel/framework/src/Illuminate/Container/Container.php:738

这样试似乎没有用

'domain' => @url(''),

有什么需要做的吗? 我正在使用 Laravel 5.2

那是因为 url helper function uses the Illuminate\Routing\UrlGenerator class 生成 URL 而 class 需要注入一个 Request 实例。在您的特定情况下,问题是 artisan 命令没有请求上下文。


我的建议是使用环境变量。所以在你的 .env 文件中你可以有:

SESSION_DOMAIN=mydomain.com

在您的 config/session.php 文件中,您可以拥有:

'domain' => env('SESSION_DOMAIN'),

您可以安全地使用 env 辅助方法,因为它没有特殊的依赖关系。


如果您真的想使用动态方法,您可以通过条件分配设置 cookie 域,如果应用程序不是 运行 控制台模式,则仅使用 url 设置 cookie 域.所以有了这个就可以了:

'domain' => app()->runningInConsole() ? null : parse_url(url(''), PHP_URL_HOST),