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