bounty将在3天后过期。回答此问题可获得+500声望奖励。ahmed希望引起更多人关注此问题。
我有两个Laravel项目,project1和project2。在project1中,我试图使用以下代码从project2运行Artisan命令:
Route::get('/', function () {
$externalProjectPath = '/path/to/laravel/project2';
$artisan = $externalProjectPath . '/artisan';
$result = Process::path($externalProjectPath)->run('php ' . $artisan . ' route:list', function (string $type, string $output) {
dump($output);
});
});
然而,当我运行这段代码时,我遇到了以下错误:
Illuminate\Database\QueryException
SQLSTATE[HY000] [1049] Unknown database 'project1' (Connection: mysql, SQL: select * from `users` where `users`.`id` = 1 limit 1)
当我已经将路径更改为project2,并且Artisan命令正在project2中运行时,为什么应用程序试图连接到project1数据库?
如何在外部Laravel项目上运行Artisan命令,并使用新的Process facade获取输出而不会遇到此数据库错误?
2条答案
按热度按时间vzgqcmou1#
我在两个文件夹中创建了两个项目,添加了您的代码,结果如预期:
然后我在.env文件中将数据库名称更改为'project 1'(我没有名称为project 1的数据库),并在代码后添加了一个新的 get 路由到'/' url:
我得到的错误和你的一样:
所以我的回答是在您创建了执行
Process::path($externalProjectPath)->run(
的路由的项目中为了解决这个问题,我建议你进入你的Laravel项目,在那里你定义了运行
Process::path($externalProjectPath)->run(
的路由:php artisan route:clear
和php artisan config:clear
来清除路由和配置缓存hs1ihplo2#
由于您在错误的文件夹中运行php,它可能正在使用
project1
的.env
。尝试像我们如何设置cron配置