From f63923a7926e129b13d127b1d8bc376a841ef3d1 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sun, 12 Feb 2023 19:26:19 +0800 Subject: [PATCH] fix built-in composer not working with init command --- src/ZM/Command/InitCommand.php | 9 +++++++-- src/ZM/ConsoleApplication.php | 5 +++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/ZM/Command/InitCommand.php b/src/ZM/Command/InitCommand.php index 54259d1d..e1cff088 100644 --- a/src/ZM/Command/InitCommand.php +++ b/src/ZM/Command/InitCommand.php @@ -72,9 +72,14 @@ class InitCommand extends Command } $section->writeln('完成'); - $section->write('执行 composer dump-autoload ... '); - exec('composer dump-autoload'); + + // 兼容内建 Composer + $env = getenv('COMPOSER_EXECUTABLE'); + if ($env === false) { + $env = 'composer'; + } + passthru(PHP_BINARY . ' ' . escapeshellcmd($env) . ' dump-autoload'); $section->writeln('完成'); }); diff --git a/src/ZM/ConsoleApplication.php b/src/ZM/ConsoleApplication.php index bff0bc07..07f2ed34 100644 --- a/src/ZM/ConsoleApplication.php +++ b/src/ZM/ConsoleApplication.php @@ -41,6 +41,11 @@ final class ConsoleApplication extends Application FileSystem::getClassesPsr4(SOURCE_ROOT_DIR . '/src/Command', 'Command') ); } + // 初始化 Composer 变量 + if (file_exists(WORKING_DIR . '/runtime/composer.phar')) { + echo '* Using native composer' . PHP_EOL; + putenv('COMPOSER_EXECUTABLE=' . WORKING_DIR . '/runtime/composer.phar'); + } $commands = []; foreach ($command_classes as $command_class) { try {