欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Yii2 Day 8 配置多版本PHP

程序员文章站 2022-06-03 16:17:04
...

起因

Yii2对最低要求PHP5.4,但是目前很多空间或者主机,PHP的版本还停留在5.3及以下。这个时候就面临两个选择:

升级PHP版本 再安装一个高版本PHP

如果已经有站点在这个服务器上运行的话,贸然升级PHP版本,很可能让那些使用了过时的函数,不规范用法的PHP程序报一堆警告或者错误,那就无可挽回啦。安全起见,再安装一个高版本PHP比较保守些。那么如果让Nginx或者Apchce使用不同版本的PHP呢?那就是PHP-FPM.

PHP-FPM

FastCGI Process Manager, 即FastCGI进程管理器。使用PHP-FPM模式的配置PHP站点,一个请求的流程是这样的(以Nginx+PHP-FPM为例):

PHP-FPM启动监听,通常默认是9000,所以很多Nginx配置会有一条 Fastcgi-pass 127.0.0.1:9000 浏览器发送请到Nginx应用服务器 Nginx把PHP请求,转发给PHP的FastCGI进程, FastCGI进程处理完毕PHP脚本后,返回给应用服务器,服务器再返回给浏览器。

因此,让不同的站点使用不同的PHP版本,就可以通过将请求转发给不同的PHP-FPM进程。

编译PHP

下载相应版本的PHP代码,编译安装到不同的路径下,把需要的扩展尽量都加进去:

./configure --prefix=/usr/local/php-5.5 --with-config-file-path=/usr/local/php-5.5/etc --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-bz2 --with-curl=/usr/bin --enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local  --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --with-mcrypt=/usr/bin --enable-zip --enable-soap --enable-mbstring  --with-gd --with-openssl --enable-pcntl --with-xmlrpc --enable-opcache

由于Yii2使用到了mcrypt,所以加了?with-mcrypt,但是如果没有安装过,configure的时候会报找不到 mcrypt.h之类的错误,说明系统确实这个库,需要先安装,使用yum install libmcrypt mcrypt mhash. 再次configure就可以不报错了。

配置PHP-FPM

安装完毕后,打开 php-fpm.conf, 修改监听的端口,或者修改sock文件名称,防止和旧版本的PHP-FPM进程冲突。然后启动这个php-fpm进程。

修改站点配置

主要就是修改FASTCGI_PASS, 指向相应的监听端口或者sock文件。