在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
答案 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),