tpc版本: v0.6.5-v0.6.6
Microsoft Visual Studio 2022
编译ThinkPHP8.1.4
main.php
<?php
// 应用初始化
function main(): void
{
// 命令行入口文件
// 加载基础文件
$autoload = getcwd() . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
if (! file_exists($autoload)) {
$autoload = __DIR__ . '/vendor/autoload.php';
}
require $autoload;
$app = new \think\App();
$app->console->run();
}
project.yml
name: typephp-think
sources:
- main.php
- vendor/psr
- vendor/league/mime-type-detection/src
- vendor/league/flysystem/src
- vendor/league/flysystem-local
- vendor/symfony/polyfill-mbstring
- vendor/symfony/var-dumper
- vendor/topthink/framework/src
- vendor/topthink/think-orm/src
- vendor/topthink/think-helper/src
- vendor/topthink/think-container/src
- vendor/topthink/think-validate/src
- vendor/topthink/think-trace/src
- vendor/topthink/think-dumper/src
- vendor/topthink/think-filesystem/src
- app
ignore:
- app/provider.php
- app/middleware.php
- app/service.php
- app/event.php
- config
- route
- extend
- view
output: build/myapp
mode: bin
optimize: 2 # 生产开启 /O2 极致优化
job: 4 # 并发编译线程数(建议设置为CPU核心数)
debug: false
cxx-flags:
- /bigobj
- /MP # 启用MSVC多处理器并发编译
编译脚本
@echo off
rem 1. 设置 SDK 环境变量 (优先读取系统变量)
if "%PHP_HOME%"=="" set PHP_HOME=E:\tpc_v0.6.5_windows_x86_64
set PHPX_HOME=%PHP_HOME%\phpx
set PATH=%PHP_HOME%;%PATH%
rem 2. 智能探测 Visual Studio MSVC 工具链
where cl.exe >nul 2>&1
if errorlevel 1 (
if exist "E:\Program Files\Microsoft Visual Studio\18\Community\VC\Auxiliary\Build\vcvars64.bat" (
call "D:\Program Files\Microsoft Visual Studio\18\Community\VC\Auxiliary\Build\vcvars64.bat" >nul
) else if exist "E:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" (
echo "call vcvars64.bat"
call "E:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" >nul
) else if defined VS_VCVARS64 (
call "%VS_VCVARS64%" >nul
))
rem 3. 产物目录准备与 php.ini 自动同步
if not exist "%~dp0build" mkdir "%~dp0build"
if exist "%~dp0php.ini" copy /y "%~dp0php.ini" "%~dp0build\php.ini" >nul
rem 4. 执行 AOT 编译
cd /d %PHP_HOME%
tpc.exe "%~dp0project.yml" > "%~dp0build_log.txt" 2>&1
报错日志:
Initialized platform/backend: Windows + MSVC (cl)
prepare: D:\www\tp8\main.php
prepare: D:\www\tp8\vendor\psr\container\src\ContainerExceptionInterface.php
prepare: D:\www\tp8\vendor\psr\container\src\ContainerInterface.php
prepare: D:\www\tp8\vendor\psr\container\src\NotFoundExceptionInterface.php
prepare: D:\www\tp8\vendor\psr\http-message\src\MessageInterface.php
prepare: D:\www\tp8\vendor\psr\http-message\src\RequestInterface.php
prepare: D:\www\tp8\vendor\psr\http-message\src\ResponseInterface.php
prepare: D:\www\tp8\vendor\psr\http-message\src\ServerRequestInterface.php
prepare: D:\www\tp8\vendor\psr\http-message\src\StreamInterface.php
prepare: D:\www\tp8\vendor\psr\http-message\src\UploadedFileInterface.php
prepare: D:\www\tp8\vendor\psr\http-message\src\UriInterface.php
prepare: D:\www\tp8\vendor\psr\log\src\AbstractLogger.php
prepare: D:\www\tp8\vendor\psr\log\src\InvalidArgumentException.php
prepare: D:\www\tp8\vendor\psr\log\src\LogLevel.php
prepare: D:\www\tp8\vendor\psr\log\src\LoggerAwareInterface.php
prepare: D:\www\tp8\vendor\psr\log\src\LoggerAwareTrait.php
prepare: D:\www\tp8\vendor\psr\log\src\LoggerInterface.php
prepare: D:\www\tp8\vendor\psr\log\src\LoggerTrait.php
prepare: D:\www\tp8\vendor\psr\log\src\NullLogger.php
prepare: D:\www\tp8\vendor\psr\simple-cache\src\CacheException.php
prepare: D:\www\tp8\vendor\psr\simple-cache\src\CacheInterface.php
prepare: D:\www\tp8\vendor\psr\simple-cache\src\InvalidArgumentException.php
prepare: D:\www\tp8\vendor\league\mime-type-detection\src\EmptyExtensionToMimeTypeMap.php
prepare: D:\www\tp8\vendor\league\mime-type-detection\src\ExtensionLookup.php
prepare: D:\www\tp8\vendor\league\mime-type-detection\src\ExtensionMimeTypeDetector.php
prepare: D:\www\tp8\vendor\league\mime-type-detection\src\ExtensionToMimeTypeMap.php
prepare: D:\www\tp8\vendor\league\mime-type-detection\src\FinfoMimeTypeDetector.php
prepare: D:\www\tp8\vendor\league\mime-type-detection\src\GeneratedExtensionToMimeTypeMap.php
prepare: D:\www\tp8\vendor\league\mime-type-detection\src\MimeTypeDetector.php
prepare: D:\www\tp8\vendor\league\mime-type-detection\src\OverridingExtensionToMimeTypeMap.php
prepare: D:\www\tp8\vendor\league\flysystem\src\CalculateChecksumFromStream.php
prepare: D:\www\tp8\vendor\league\flysystem\src\ChecksumAlgoIsNotSupported.php
prepare: D:\www\tp8\vendor\league\flysystem\src\ChecksumProvider.php
prepare: D:\www\tp8\vendor\league\flysystem\src\Config.php
prepare: D:\www\tp8\vendor\league\flysystem\src\CorruptedPathDetected.php
prepare: D:\www\tp8\vendor\league\flysystem\src\DecoratedAdapter.php
prepare: D:\www\tp8\vendor\league\flysystem\src\DirectoryAttributes.php
prepare: D:\www\tp8\vendor\league\flysystem\src\DirectoryListing.php
prepare: D:\www\tp8\vendor\league\flysystem\src\FileAttributes.php
prepare: D:\www\tp8\vendor\league\flysystem\src\Filesystem.php
prepare: D:\www\tp8\vendor\league\flysystem\src\FilesystemAdapter.php
prepare: D:\www\tp8\vendor\league\flysystem\src\FilesystemException.php
prepare: D:\www\tp8\vendor\league\flysystem\src\FilesystemOperationFailed.php
prepare: D:\www\tp8\vendor\league\flysystem\src\FilesystemOperator.php
prepare: D:\www\tp8\vendor\league\flysystem\src\FilesystemReader.php
prepare: D:\www\tp8\vendor\league\flysystem\src\FilesystemWriter.php
prepare: D:\www\tp8\vendor\league\flysystem\src\InvalidStreamProvided.php
prepare: D:\www\tp8\vendor\league\flysystem\src\InvalidVisibilityProvided.php
prepare: D:\www\tp8\vendor\league\flysystem\src\MountManager.php
prepare: D:\www\tp8\vendor\league\flysystem\src\PathNormalizer.php
prepare: D:\www\tp8\vendor\league\flysystem\src\PathPrefixer.php
prepare: D:\www\tp8\vendor\league\flysystem\src\PathTraversalDetected.php
prepare: D:\www\tp8\vendor\league\flysystem\src\PortableVisibilityGuard.php
prepare: D:\www\tp8\vendor\league\flysystem\src\ProxyArrayAccessToProperties.php
prepare: D:\www\tp8\vendor\league\flysystem\src\ResolveIdenticalPathConflict.php
prepare: D:\www\tp8\vendor\league\flysystem\src\StorageAttributes.php
prepare: D:\www\tp8\vendor\league\flysystem\src\SymbolicLinkEncountered.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToCheckDirectoryExistence.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToCheckExistence.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToCheckFileExistence.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToCopyFile.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToCreateDirectory.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToDeleteDirectory.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToDeleteFile.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToGeneratePublicUrl.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToGenerateTemporaryUrl.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToListContents.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToMountFilesystem.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToMoveFile.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToProvideChecksum.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToReadFile.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToResolveFilesystemMount.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToRetrieveMetadata.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToSetVisibility.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnableToWriteFile.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnixVisibility\PortableVisibilityConverter.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnixVisibility\VisibilityConverter.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UnreadableFileEncountered.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UrlGeneration\ChainedPublicUrlGenerator.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UrlGeneration\PrefixPublicUrlGenerator.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UrlGeneration\PublicUrlGenerator.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UrlGeneration\ShardedPrefixPublicUrlGenerator.php
prepare: D:\www\tp8\vendor\league\flysystem\src\UrlGeneration\TemporaryUrlGenerator.php
prepare: D:\www\tp8\vendor\league\flysystem\src\Visibility.php
prepare: D:\www\tp8\vendor\league\flysystem\src\WhitespacePathNormalizer.php
prepare: D:\www\tp8\vendor\league\flysystem-local\FallbackMimeTypeDetector.php
prepare: D:\www\tp8\vendor\league\flysystem-local\LocalFilesystemAdapter.php
prepare: D:\www\tp8\vendor\symfony\polyfill-mbstring\Mbstring.php
Fatal error: Variadic parameters cannot be passed by reference in D:\www\tp8\vendor\symfony\polyfill-mbstring\Mbstring.php:163
#0 [internal function]: TypePhp\Diagnostics\CliDiagnosticReporter->fatal('...')
#1 [internal function]: TypePhp\Translator->prepare('...')
#2 D:\a\typephp\typephp\src\compiler.php(9): main(2, Array)
tpc_v0.6.6报一样的错误
symfony/polyfill-mbstring 版本: v1.38.2
tpc版本: v0.6.5-v0.6.6
Microsoft Visual Studio 2022
编译ThinkPHP8.1.4
main.php
project.yml
编译脚本
报错日志:
tpc_v0.6.6报一样的错误
symfony/polyfill-mbstring 版本: v1.38.2