From a5a3a990bfa1d87f3b1dc879ccc6b9a7fd007730 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Wed, 8 Apr 2026 22:13:21 +0800 Subject: [PATCH] Use legacy --enable-micro-win32 way to workaround --- src/Package/Target/php/windows.php | 8 +++++++- src/StaticPHP/Util/SourcePatcher.php | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/Package/Target/php/windows.php b/src/Package/Target/php/windows.php index e81de3b6..47eb3c9f 100644 --- a/src/Package/Target/php/windows.php +++ b/src/Package/Target/php/windows.php @@ -35,11 +35,17 @@ trait windows } #[Stage] - public function buildconfForWindows(TargetPackage $package): void + public function buildconfForWindows(TargetPackage $package, PackageInstaller $installer): void { InteractiveTerm::setMessage('Building php: ' . ConsoleColor::yellow('./buildconf.bat')); V2CompatLayer::emitPatchPoint('before-php-buildconf'); cmd()->cd($package->getSourceDir())->exec('.\buildconf.bat'); + + if ($package->getBuildOption('enable-micro-win32') && $installer->isPackageResolved('php-micro')) { + SourcePatcher::patchMicroWin32(); + } else { + SourcePatcher::unpatchMicroWin32(); + } } #[Stage] diff --git a/src/StaticPHP/Util/SourcePatcher.php b/src/StaticPHP/Util/SourcePatcher.php index b4e2e1c7..70525e67 100644 --- a/src/StaticPHP/Util/SourcePatcher.php +++ b/src/StaticPHP/Util/SourcePatcher.php @@ -196,6 +196,22 @@ class SourcePatcher FileSystem::restoreBackupFile(SOURCE_PATH . '/php-src/ext/phar/phar.c'); } + public static function patchMicroWin32(): void + { + // patch micro win32 + if (!file_exists(SOURCE_PATH . '\php-src\sapi\micro\php_micro.c.win32bak')) { + copy(SOURCE_PATH . '\php-src\sapi\micro\php_micro.c', SOURCE_PATH . '\php-src\sapi\micro\php_micro.c.win32bak'); + FileSystem::replaceFileStr(SOURCE_PATH . '\php-src\sapi\micro\php_micro.c', '#include "php_variables.h"', '#include "php_variables.h"' . "\n#define PHP_MICRO_WIN32_NO_CONSOLE 1"); + } + } + + public static function unpatchMicroWin32(): void + { + if (file_exists(SOURCE_PATH . '\php-src\sapi\micro\php_micro.c.win32bak')) { + rename(SOURCE_PATH . '\php-src\sapi\micro\php_micro.c.win32bak', SOURCE_PATH . '\php-src\sapi\micro\php_micro.c'); + } + } + public static function patchPhpSrc(?array $items = null): bool { $patch_dir = ROOT_DIR . '/src/globals/patch/php-src-patches';