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 {