windows 下 apache 和 php 的版本搭配是个常见的问题,这里记录一下自己的选择。如果 windows 下使用 IIS,则忽略此文章。
apache 下载地址:https://www.apachehaus.com/cgi-bin/download.plx
php 下载地址:https://windows.php.net/download/
1.vc
进入下载地址后 apache 和 php 都有 vc9,vc11,vc13vc15 等版本选择,x86 和 x64 就不解释,看自己的操作系统是 32 位还是 64 位进行选择。下面对 vc 进行一下说明:
VC9 => Visual C++ 2008 x86|x64 Redistributable
VC11 => Visual C++ 2012 x86|x64 Redistributable
VC14 => Visual C++ 2013 x86|x64 Redistributable
VC15 => Visual C++ 2015-2019 x86|x64 Redistributable
如果你的操作系统不存在你需要下载对应的 vc 版本需要你另外安装对应的 vc, 建议直接下载操作系统对应的 vc 版本
2.ts 和 nts
ts(Thread-Safety) 即线程安全,多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染 php 以 ISAPI 方式加载的时候选择这个版本.,php 以 ISAPI 方式加载的时候选择这个版本.
nts(None-Thread Safe) 即非线程安全,就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的是 脏数据 php 以 fast cgi 方式运行的时候选择这个版本,具有更好的性能;ISAPI(Internet Server Application Programming Interface), 通常是指被 http 服务器所加载,以服务器的模块形式运行,由微 软提出,故只能在 win 平台上运行,例如 win 下的 apache,iis[据说用 fast cgi 方式工作更稳定],而 linux 上 php 则以 Apache 模块或者 php-fpm 的方式运行。
ts 和 nts 是在 php 的版本中进行选择,因为 apache 的工作模式是线程安全,所以 php 选择的也是 ts 的版本。
另外 apache 在配置 php 是需要使用 php7apache2.4.dll(php5 则是 php5apache2.2.dll), 如果是 nts 版本则没有则这个 dll,因此不要下错了。
3. 版本
apache2.2 的版本最高支持到 php5.4
php5.5 以上只能使用 apache2.4