window server 2012安装php7.x

背景

正常情况下window上装php直接根据对应版本的vc++进行安装即可,但是window server上的vc++没有办法直接安装成功。

不只winserver,经测试win7也有同样问题。

场景复现

系统环境:window server 2012 R2 Standard Build 9600

php环境:phpstudy+php 7.x

先看问题

提示缺少VCRUNTIME140.dll,如果配的是更高版本的apache如2.4.43也会有这个提示。

win7下提示缺少api-ms-win-crt-runtime-l1-1-0.dll

注意:winserver一定要跑命令行才能发现这个问题,不跑命令行不会弹这个提示;phpstudy能开apache,但是php页面进去会是500。

解决

经过检索得知:没有安装vc2015。

去microsoft直接下载安装,winserver会提示设置失败。

提示里有个日志文件,可以点进去看看。并尝试检索error

可以看到是有个补丁安装失败了,试一下手动安装看看。

提示不适用计算机,接下来直接检索这个补丁名字。得到以下命令,复制逐一运行,补丁路径一定要对应。

expand –F:* C:\update\Windows8.1-KB2999226-x64.msu C:\update\
dism.exe /online /Add-Package /PackagePath:C:\update\Windows8.1-KB2999226-x64.cab

执行完回来再双击vc2015安装,这里就直接点“修复”按钮即可。发现安装成功了。

那就检查一下php 7.4能不能跑了,还是缺dll,很奇怪。

来回检查一遍过后,原来我装的php7.4是32位的,但装的vc2015是64位的,原来vc需要对应的是php版本而不是win版本。

注:oci8扩展也是这样,需要对应php位数,但oracle客户端windows版本只有32位的,所以php只能装32的。

那现在下载一个vc2015-x86安装试一下,顺便测试一下64/32能不能共存。

不行,开始缺失api-ms-win-crt-runtime-l1-1-0.dll了。

这里分析两种可能,1:64/32不能共存,2:php7.4还需要其他版本的vc。一步一步来:

  1. 卸掉64位vc2015,并修复32位vc。发现依然不行
  2. 既然7.4不行,那就换32位的7.3~7.0试一下。一顿操作下来一样不行。

那就检索api-ms-win-crt-runtime-l1-1-0.dll

最终测试成功的方案是继续装两个补丁KB2919442KB2919355,注意:这个补丁就要对应自己系统的位数了。

KB2919442:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=42162

KB2919355:https://www.microsoft.com/zh-cn/download/details.aspx?id=42334

KB2919355是有多个补丁集合的,要全部下载下来。

先安装KB2919442KB2919355补丁集合的安装顺序:clearcompressionflag.exeKB2919355KB2932046KB2959977KB2937592KB2938439KB2934018。clearcompressionflag.exe可能就是清理一下数据或者缓存的,执行了没反应双击会一闪而过。

注意:补丁安装过程中会有重启操作,如果是生产环境需要等业务空闲时安装,整个过程需要20-30分钟

以下是官方说法:

按步骤安装完成后,再回头安装vc2015。就绪之后,跑php发现虽然不提示缺dll,但是出warning了。

老样子,根据warning检索。

最后得知php7.4是需要安装vc2015-2019,注意这是一个文件不是多个。那是不是意味着7.4以下的在这个环境中能正常使用。

验证猜想:

php7.3无异常,那么就继续解决php7.4问题,直接去下载vc2015-2019,通过百度或者微软官方都可以检索到。关键词:Microsoft Visual C++ 2015-2019 Redistributable

官方链接:https://support.microsoft.com/zh-cn/topic/%E6%9C%80%E6%96%B0%E6%94%AF%E6%8C%81%E7%9A%84-visual-c-%E4%B8%8B%E8%BD%BD-2647da03-1eea-4433-9aff-95f26a218cc0

x64:https://aka.ms/vs/16/release/vc_redist.x64.exe

x86:https://aka.ms/vs/16/release/vc_redist.x86.exe

安装后问题得到解决,发现php7.4-x64也能正常使用。


window server 2012安装php7.x
http://blog.icy8.cn/posts/60585/
作者
icy8
发布于
2021年6月3日
许可协议