Microsoft 仅为社区版提供名为 VisualStudioSetup.exe 的最新安装程序,在撰写 VS2022 时为:https://visualstudio.microsoft.com/vs/older-downloads/
我无法用它编译兼容的 PHP 二进制文件。
我面临的问题是,当您从源代码(PHP 8.1、PHP 8.2、PHP 8.3)编译 PHP 时,它会链接到 MSVC 14.40。当您从 https://windows.php.net 下载时,它会链接到 MSVC 14.29。
因此自编译的 PECL 扩展与下载的 PHP 二进制文件不兼容。
它们不会在启动时加载并显示以下消息: 警告:
PHP Startup: Can't load module 'php_jsmin.dll' as it's linked with 14.40, but the core is linked with 14.29 in Unknown on line 0
这确实适用于所有自编译扩展,而不仅仅是 jsmin。
我无法仅安装 MSVC 14.29,因为 PHP 需要两个组件:
适用于 Windows 的 C++ CMake 工具 有一个该死的依赖性:
php 编译环境现在始终链接到 v14.40。这对于 Visual Studio 2019 安装程序来说没有问题,但 Microsoft 禁止下载旧的社区版本 - 您只能下载具有前面提到的依赖性问题的 Visual Studio 2022 安装程序。
使用 Visual Studio 2022 安装程序从源代码编译 PHP 时如何链接到 MSVC 14.29。
提前非常感谢您!
免责声明:这是@IanKemp评论的答案。
基本上没有已知的方法(至少对我来说没有)来改变 php 编译环境的行为。
但是有一个简单的方法可以完全避免这个问题。只需下载旧的 VisualStudioSetup.exe 社区版 2019,其中 MSVC 14.29 是最新的 MSVC。
替代方案
我发现了一个不被接受的答案,它甚至提供了更结构化的下载,甚至更旧的VS版本:https://stackoverflow.com/a/78644904/1519125
我不能/不会将其指定为重复,因为我所指的答案不是被接受的答案。内容如下:
您也可以在这里下载其他版本: