PHP多版本
一、前言
为了应对不同的web程序运行,经常会用到多版本PHP配置以方便灵活切换。
这里采用Nginx+多版本PHP的方式运行,PHP安装方式为编译安装。
二、前期准备
PHP下载
下载地址:www.php.net或museum.php.net
版本选择:PHP5.2/5.3/5.4/5.5/5.6/7.2根据需要选择,我这里使用PHP5.6和7.2版本演示。
依赖安装
yum install -y make cmake gcc gcc-c++ autoconf automake libpng-devel libjpeg-devel zlib libxml2-devel ncurses-devel bison \ libtool-ltdl-devel libiconv libmcrypt mhash mcrypt pcre-devel openssl-devel freetype-devel libcurl-devel
PHP安装
使用./configure --help查看编译支持的选项。如果写了不支持的选项,如php7里不支持--with-mysql=mysqlnd会提示:
configure: WARNING: unrecognized options: --with-mysql
#编译参数
./configure --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/ --enable-inline-optimization --enable-opcache --enable-session --enable-fpm --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pdo-sqlite --with-sqlite3 --with-gettext --enable-mbregex --enable-mbstring --enable-xml --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-xmlrpc --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-curlwrappers --with-zlib --enable-zip --with-bz2 --with-gd --enable-gd-native-ttf --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-readline
#编译安装
make && make install
注意事项:
参数 --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/
一定要设置正确,多个PHP版本须编译安装在不同路径!!!
可选项:--with-fpm-user=www --with-fpm-group=www
这里面开启了很多扩展。如果这时候忘了开启,以后还能加上吗?答案是可以的。以后只需要进入源码的ext目录,例如忘了pdo_mysql,进入ext/pdo_mysql,使用phpize工具,像安装普通扩展一样即可生成pdo_mysql.so。
关于:--enable-safe-mode
开启的话php可以执行一下系统函数,建议关闭(可搜索受此函数影响的php函数)。
如果只需要配置某一个目录可以执行则 设置为on并指定 safe_mode_exec_dir=string 目录来执行系统函数。本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。
safe_mode = off
php7编译不用加这个配置。编译比较耗内存和CPU,等待半小时左右编译完成。
三、配置文件
配置文件
从安装包里复制php.ini、php-fpm.conf到安装目录或者自定义。
PHP5.6配置文件(安装后自行更改文件名):
php.ini:php安装目录/etc/php.ini
php-fpm:php安装目录/etc/php-fpm.conf
PHP7.2配置文件(安装后自行更改):
php.ini:php安装目录/etc/php.ini
php-f