我遇到一个问题,当我调用passport
时passport:client
命名空间不可用。我安装了Laravel passport according to the documentation,并安装了一个版本为5.6.34的全新Laravel项目。我还检查了similar question,并成功执行了所有步骤。
从命令行调用php artisan passport:client --password --name="Test"
可以正常工作,并且我可以在数据库中看到客户端。
但是,如果我像这样在routes/web.php
中创建一条路线,
<?php
use Illuminate\Support\Facades\Route;
use \Illuminate\Support\Facades\Artisan;
Route::get('/', function () {
Artisan::call('passport:client', [
'--password' => true,
'--name' => "Test client",
'--quiet' => true,
]);
});
并使用Artisan门面调用当我导航到http://homestead.test/
时出现以下错误的命令。
Symfony \ Component \ Console \ Exception \ CommandNotFoundException
The command "passport:client" does not exist.
我在Laravel\Passport\PassportServiceProvider::class
的provider数组中添加了config/app.php
。
如何从网络路由调用passport:client
命令?
我们有一个Laravel应用程序,它具有数百个动态处理的数据库连接。在管理界面中,您可以创建一个新项目,从而创建一个我们需要在其中生成客户端的新数据库。
我的另一个选择是实例化ClientRepository
并调用createPasswordGrantClient()
方法,但我想尽可能避免这种情况。我很好奇,为什么在CLI上调用而不是通过请求时,为什么命名空间可用。我可以通过请求调用其他命令,例如migrate:fresh
,但是passport:client
会失败,即使它是迁移的一部分或在另一个命令中。
答案 0 :(得分:0)
根据this link,我运行了以下命令。
composer update
php artisan config:cache
php artisan migrate
php artisan passport:install
这对我有帮助。