在config/session.php中使用helper函数会导致所有php artisan命令/composer出现错误

在config/session.php中使用helper函数会导致所有php artisan命令/composer出现错误,php,laravel,laravel-5,composer-php,laravel-artisan,Php,Laravel,Laravel 5,Composer Php,Laravel Artisan,在session.php中,我使用帮助函数url()创建动态域名。这样,当我移动到真正的服务器时,我就不必更改域名了。看起来是这样的: 'domain' => url(''), 在浏览器中一切正常,但当我从终端使用任何php artisan或composer命令时,会出现以下错误: PHP Fatal error: Uncaught ReflectionException: Class log does not exist in /vendor/laravel/framework/sr

在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(''),
有什么事要做吗? 我使用的是Laravel5.2,这是因为helper函数使用类来生成URL,而该类需要注入一个
请求
实例。在您的特定情况下,问题在于artisan命令没有请求上下文


我的建议是使用环境变量。因此,在
.env
文件中,您可以拥有:

SESSION_DOMAIN=mydomain.com
'domain' => env('SESSION_DOMAIN'),
config/session.php
文件中,您可以拥有:

SESSION_DOMAIN=mydomain.com
'domain' => env('SESSION_DOMAIN'),
您可以安全地使用
env
helper方法,因为它没有特殊的依赖项


如果确实希望使用动态方法,则可以通过条件分配设置cookie域,如果应用程序未在控制台模式下运行,则仅使用
url
设置cookie域。因此,有了这一点就可以做到:

'domain' => app()->runningInConsole() ? null : parse_url(url(''), PHP_URL_HOST),
这是因为helper函数使用类来生成URL,而该类需要注入一个
请求
实例。在您的特定情况下,问题在于artisan命令没有请求上下文


我的建议是使用环境变量。因此,在
.env
文件中,您可以拥有:

SESSION_DOMAIN=mydomain.com
'domain' => env('SESSION_DOMAIN'),
config/session.php
文件中,您可以拥有:

SESSION_DOMAIN=mydomain.com
'domain' => env('SESSION_DOMAIN'),
您可以安全地使用
env
helper方法,因为它没有特殊的依赖项


如果确实希望使用动态方法,则可以通过条件分配设置cookie域,如果应用程序未在控制台模式下运行,则仅使用
url
设置cookie域。因此,有了这一点就可以做到:

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

是否有可能使url成为动态的?现在我创建了一个函数,该函数将从url(“”)中删除http://部分。即使使用$\u服务器['HTTP\u HOST']也会导致错误。我已经用解决方案更新了我的答案。既然您说您已经创建了一个函数来从URL中删除
http://
部分,那么解决方案还展示了如何使用本机函数从URL中提取域,因此不需要其他函数:)。是否可以使URL成为动态的?现在我创建了一个函数,该函数将从url(“”)中删除http://部分。即使使用$\u服务器['HTTP\u HOST']也会导致错误。我已经用解决方案更新了我的答案。由于您说您已经创建了一个函数来从URL中删除
http://
部分,因此解决方案还显示了如何使用本机函数从URL提取域,因此不需要其他函数:)。