Apache+Mysql+Mod_fcgid+PHP多版本共存(Windows)

安装时请确认已经安装好(VC14+VC11+VC9)

1.安装Apache

把Apache 2.4解压到C:\Program Files\并修改C:\Program Files\Apache24\conf\httpd.conf文件

找到 ServerRoot "c:/Apache24" 改为 ServerRoot "c:/Program Files/Apache24"

找到 #ServerName www.example.com:80 并去掉前面的#号
 
找到 DocumentRoot "c:/Apache24/htdocs" 改为 DocumentRoot "c:/Program Files/Apache24/htdocs"

找到  改为 

找到 ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" 改为 ScriptAlias /cgi-bin/ "c:/Program Files/Apache24/cgi-bin/"

找到  改为 

开始-运行-输入CMD-以管理员身份运行CMD-输入命令

cd C:\Program Files\Apache24\bin\

httpd.exe -k install

httpd.exe -k start

2.Apache加载fcgid扩展模块

解压mod_fcgid.so文件到C:\Program Files\Apache24\modules,并打开C:\Program Files\Apache24\conf\httpd.conf文件,在最后一行加入下面代码

#加载fcgid扩展模块
LoadModule fcgid_module modules/mod_fcgid.so
#添加映射
AddHandler fcgid-script .php
# 设置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess,防止php-cgi进程在处理完所有请求前退出
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
#php-cgi每个进程的最大请求数
FcgidMaxRequestsPerProcess 1000
#php-cgi最大的进程数
FcgidMaxProcesses 100
#最大执行时间
FcgidIOTimeout 120
FcgidIdleTimeout 120
AddType application/x-httpd-php .php
AcceptFilter http none
AcceptFilter https none
EnableSendfile off
EnableMMAP off

3.安装PHP

在C盘根目录新建PHP文件夹,解压各版本PHP到C:\PHP\,在各PHP文件夹找到php.ini-development文件重命名为php.ini打开并修改

找到;extension_dir = "ext" 去掉前面的; 号
找到;extension=php_mbstring.dll 去掉前面的; 号
找到;date.timezone = 去掉前面的; 号并修改为 date.timezone = "Asia/Shanghai"
有需要可以配置upload_tmp_dir和session.save_path

打开C:\Program Files\Apache24\conf\httpd.conf文件

找到
DirectoryIndex index.html
加上index.php修改为
DirectoryIndex index.html index.php

4.安装Mysql

解压Mysql5.7到C:\Program Files\,将my-default.ini重命名为my.ini打开并修改

找到
# basedir = .....
# datadir = .....
# port = .....
去掉#号,并修改为
basedir = C:\Program Files\mysql-5.7.14-winx64
datadir = C:\Program Files\mysql-5.7.14-winx64\data
port = 3306

在C:\Program Files\mysql-5.7.14-winx64\下新建data文件夹

以管理员身份运行CMD-输入命令

cd C:\Program Files\mysql-5.7.14-winx64\bin

mysqld --initialize

mysqld -install

net start mysql

到C:\PHP\各PHP目录下修改php.ini文件

找到
;extension=php_mysqli.dll
;extension=php_pdo_mysql.dll
去掉;号

数据库随机密码在C:\Program Files\mysql-5.7.14-winx64\data\下面的.err文件中搜索root@localhost: 找到,修改密码以管理员身份运行CMD-输入命令

cd C:\Program Files\mysql-5.7.14-winx64\bin

mysql -uroot -p

set password for root@localhost = password('密码'); 
#Mysql 8.0修改密码#
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';  

#Mysql 8.0改密码验证方式my.ini#
default_authentication_plugin = mysql_native_password

5.启用vhosts支持PHP多版本共存

打开C:\Program Files\Apache24\conf\httpd.conf文件

找到
#Include conf/extra/httpd-vhosts.conf
去掉#号

打开C:\Program Files\Apache24\conf\extra\httpd-vhosts.conf修改配置文件

#注意FcgidInitialEnv PHPRC和FcgidWrapper为你PHP所在的目录
#使用PHP5.3

      ServerName www.php53.com
      FcgidInitialEnv PHPRC "C:/PHP/php53"
      FcgidWrapper "C:/PHP/php53/php-cgi.exe" .php
	  DocumentRoot "C:/Program Files/Apache24/htdocs"
		
			Options FollowSymLinks ExecCGI
			AllowOverride None
			Order deny,allow
			allow from all
		

#使用PHP5.4

      ServerName www.php54.com
      FcgidInitialEnv PHPRC "C:/PHP/php54"
      FcgidWrapper "C:/PHP/php54/php-cgi.exe" .php
	  DocumentRoot "C:/Program Files/Apache24/htdocs"
		
			Options FollowSymLinks ExecCGI
			AllowOverride None
			Order deny,allow
			allow from all
		

#使用PHP7

      ServerName www.php7.com
      FcgidInitialEnv PHPRC "C:/PHP/php7"
      FcgidWrapper "C:/PHP/php7/php-cgi.exe" .php
	  DocumentRoot "C:/Program Files/Apache24/htdocs"
		
			Options FollowSymLinks ExecCGI
			AllowOverride None
			Order deny,allow
			allow from all
		

#以此类推

以管理员身份运行CMD-输入命令重启Apache

cd C:\Program Files\Apache24\bin\

httpd.exe -k restart