在config / session.php中使用辅助函数会给所有php artisan命令/ composer带来错误

时间:2016-03-05 17:21:06

标签: php laravel laravel-5 composer-php artisan

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

'domain' => url(''),

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

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

1 个答案:

答案 0 :(得分:0)

这是因为url辅助函数使用Illuminate\Routing\UrlGenerator类生成URL,该类需要注入Request实例。在您的特定情况下,问题是工匠命令没有请求上下文。

我的建议是使用环境变量。因此,在您的.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),