在本地安装了Apache2.4,但是工作中不同的项目需要的php版本往往不同,但又不想用PHP study这类的集成工具;经过研究和查阅资料,找到一种解决方案。如下:
1.在apache的httpd.conf配置文件的最下方这样配置多个php版本
#php7.0.9
<IfDefine php7.0>
LoadModule php7_module D:\zmq\amp\Extensions\php\php-7.0.9-Win32-VC14-x64/php7apache2_4.dll
<IfModule php7_module>
PHPIniDir "D:/zmq/amp/Extensions/php/php-7.0.9-Win32-VC14-x64/"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
</IfDefine>
#php7.2.33
<IfDefine php7.2>
LoadModule php7_module D:\zmq\amp\Extensions\php\php-7.2.33-Win32-VC15-x64\php7apache2_4.dll
<IfModule php7_module>
PHPIniDir "D:\zmq\amp\Extensions\php\php-7.2.33-Win32-VC15-x64/"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
</IfDefine>
#php7.4
<IfDefine php7.4>
LoadModule php7_module D:/zmq/amp/Extensions/php/php-7.4.5-Win32-vc15-x64/php7apache2_4.dll
<IfModule php7_module>
PHPIniDir "D:/zmq/amp/Extensions/php/php-7.4.5-Win32-vc15-x64/"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
</IfDefine>
#php8
<IfDefine php8.0>
LoadModule php_module "D:/zmq/amp/Extensions/php/php-8.0.3-Win32-vs16-x64/php8apache2_4.dll"
PHPIniDir "D:/zmq/amp/Extensions/php/php-8.0.3-Win32-vs16-x64/"
AddType application/x-httpd-php .php .html
</IfDefine>
原理简单解释一下,每个<IfDefine php7.0>中的"php7.x"是一个判断参数,在添加apache服务时会添加一个参数,这样在启动服务时就可以根据其附带的参数来引入对应版本的PHP模块。
2.使用命令行来注册多个apache服务
注意:一个php版本对应一个服务,使用时每次只能启动一个服务
以window自带的cmd举例:
httpd.exe -k install -n Apache2.4_PHP7.0 -D php7.0
httpd.exe -k install -n Apache2.4_PHP7.2 -D php7.2
上面的命令一条对应一个版本的php,可以添加多个服务,命令后面的"-D php7.0" 就是标识版本的参数,"-D"代表注册启动时携带一个参数
3.再来说怎么启动,这就要用到apache自带的一个工具:ApacheMonitor.exe,这个小工具一般都在Apache的bin目录下,现在打开它(建议把他发送到桌面快捷方式,方便日后操作)
使用它就可以快捷的启动你安装的各个版本。然后你又可以做一个快乐的码农了!