当前位置: 首页 > 后端技术 > PHP

centos7上配置apache不同域名多版本php共存

时间:2023-03-29 20:35:53 PHP

在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在ExecCGI的最后Options记得加上FollowSymlinksExecCGI。如果不填写ExecCGI,则php无法运行。FollowSymlinks不填,有的项目不能直接进入,打开连接就报错,说目录没有权限访问。最后重启apache就可以了。可以在脚本中输入phpinfo();只需打开连接并访问。可以看到链接的.cn和.com是不同的域名,但是访问的是同一个文件。有参考文章:https://my.oschina.net/u/2366984/blog/809833https://www.cnblogs.com/sky-view/p/5112888.htmlhttps://my.oschina.net/u/2366984/blog/543148https://blog.51cto.com/12529218/2313761https://www.osyunwei.com/archives/10174.html