在centos7上配置apache,实现不同域名和多个版本的php(5.6)共存。最近想升级php版本,因为我还要继续使用老版本的php(5.6)。如果我直接升级,肯定有些代码不兼容(比如composer下载的类库)。我想一起使用多个版本的Php。我安装了灯。问题是只有lnmp可以有多个版本,所以会出现下面的情况。所以目前的情况是想在apache中配置多个版本。在网上苦苦搜索,基本上在nginx或者iis上配置了多个版本的php,都不能满足我的需求。其实我也找到了一些关于在apache上配置多个版本的php的文章。按照我的理解和操作,一个都完成不了。这可能是因为我的理解力或技术水平不高。搜集了很多文章中的要点,经过一天的折磨才慢慢明白,终于完成了apache上多版本php的配置。从技术上讲,我只是一名小学生。如果有不对的地方,请指出,非常感谢。1、下载php7.3因为下载很慢,用kxsw即时修复。我是直接从php官网下载下来扔到服务器上的。当然也可以使用命令cd/wgethttps://www.php.net/distributions/php-7.3.20.tar.gz2,解压tar-xzvfphp-7.3.20.tar.gz3,配置一些编译前的参数cdphp-7.3.20./configure'--prefix=/usr/local/php7.3''--with-config-file-path=/usr/local/php7.3/etc''--with-mysql=mysqlnd''--with-mysqli=mysqlnd''--with-pdo-mysql=mysqlnd''--with-gd''--with-iconv''--with-zlib''--enable-xml''--enable-bcmath''--enable-shmop''--enable-sysvsem''--enable-inline-optimization''--enable-mbregex''--enable-fpm''--enable-mbstring''--enable-ftp''--enable-gd-native-ttf''--with-openssl''--enable-pcntl''--enable-sockets''--with-xmlrpc''--enable-zip''--enable-soap''--with-pear''--with-gettext''--enable-session''--with-mcrypt''--with-curl''--with-libzip=/usr/local/libzip-1.3.2''--disable-fileinfo'**--prefix=/usr/local/php7.3,等号后面的路径就是你的next安装,按要求填写。需要注意--enable-fpm参数。按照php-fpm方式安装。对应的参数是--with-apxs2=/usr/local/apache/bin/apxs,等号前是使用模块安装,等号后是填写对应apache的路径。--enable-fpm和--with-apxs2=PATH模式,两者只能选其一,填写参数--enable-fpm和不要--with-apxs2,后者在apache中直接安装,会随着apache的启动开始。****提前告诉大家,后期编译有两个问题:3.1.说明libzip版本太低。如果有这样的问题,可以上网查一下。无非就是重新下载安装。重点是在上面的内容中加入相应的参数。比如我的libzip版本低,加上--with-libzip=/usr/local/libzip-1.3.23.2表示内存不足。我的机器是2G的。所以提前加上--disable-fileinfo**4,编译安装make&&makeinstall一般要等10到20分钟才能完成。取决于机器配置。5、下载并编译安装mod_fcgid安装Apache的mod_fcgid模块。mod_fcgid模块可以实现Apache下多个版本php的同时运行。你可以自己上网找我。我将使用版本2.3.9。压缩包格式为gzcd/tar-zxvfmod_fcgid-2.3.9.tar.gzcdmod\_fcgid-2.3.9APXS=/usr/local/apache/bin/apxs安装完./configure.apxsmakemakeinstall后,找到httpdapache中的.conf文件(lamp默认是/usr/local/apache/conf)有150行左右,就是LoadModule加载模块的最后一行,添加LoadModulefcgid_modulemodules/mod_fcgid.so其实后面会自动添加上面的编译安装,不用自己手动,所以记录在这里。6.多域名多版本php配置(刚卡在这里)。网上很多资料和文章都是在apache的httpd.conf中加入类似如下的代码,然后重启apache。重启后直接死掉,php无法解析#Loadfcgid扩展模块(补充说明,fcgid对应实际apache版本,apache2版本测试2.3.6正常)LoadModulefcgid\_modulemodules/mod\_fcgid.so#添加映射AddHandlerfcgid-script.fcgi.php#设置PHP\_FCGI\_MAX\_REQUESTS大于等于FcgidMaxRequestsPerProcess防止php-cgi进程在处理所有请求前退出FcgidInitialEnvPHP\_FCGI\_MAX\_REQUESTS1000#php-cgiMaximumrequestperprocessNumberFcgidMaxRequestsPerProcess1000#php-cgi最大进程数FcgidMaxProcesses3#最大执行时间FcgidIOTimeout120FcgidIdleTimeout120#limit最大请求字节数(单位b)FcgidMaxRequestLen2097152AddTypeapplication/x-httpd-php.php#------这里是默认虚拟主机配置的存放目录#php.iniFcgidInitialEnvPHPRC"D:/php5.4.4/"#php-cgipathFcgidWrapper"D:/php5.4.4/php-cgi.exe".php我想到了这个啦ter配置被所有域名调用,另一种方式。进入需要升级到7.3php版本的域名(lamp默认是/usr/local/apache/conf/vhost),在红框中填写内容。为了方便复制#MapfcgiexecutescriptAddHandlerfcgid-script.fcgi.php#设置PHP_FCGI_MAX_REQUESTS大于等于FcgidMaxRequestsPerProcess防止php-cgi进程在处理所有请求前退出FcgidInitialEnvPHP_FCGI_MAX_REQUESTS1000#php-cgi最大请求数requestsperprocessFcgidMaxRequestsPerProcess520#最大执行时间FcgidIOTimeout300#最大空闲时间FcgidIdleTimeout300#限制最大请求字节数FcgidMaxRequestLen2097152#php程序最大上传文件限制为50MB,默认只有2MBMaxRequestLen52428800#phpit安装路径FcenviralPHPitin/usr/local/php7./"#php-cgi脚本执行路径FcgidWrapper"/usr/local/php7.3/bin/php-cgi".php#这里需要注意的是填写OptionsFollowSymlinksin
