TencentOS版本3.1安装并运行php7,现在需要同时运行一个php8.
php选择使用了php v8.0.27
采用编译安装的方式,编译命令如下:
./configure --prefix=/application/php8 --with-config-file-path=/application/php8/etc --with-mhash --with-openssl --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv --with-zlib --disable-debug --disable-rpath --enable-shared --enable-bcmath --enable-shmop --enable-sysvsem --enable-gd --with-jpeg --with-freetype --enable-mbregex --enable-mbstring --enable-ftp --enable-pcntl --enable-sockets --enable-soap --without-pear --with-gettext --enable-session --with-curl --enable-opcache=no --enable-fpm --with-fpm-user=php --with-fpm-group=www --without-gdbm --enable-fast-install --disable-fileinfo
编译过程中TencentOS 3.1有些依赖没有安装,会出现如下提示:
configure: error: Package requirements (sqlite3 > 3.7.4) were not met:
Package 'sqlite3', required by 'virtual:world', not found
解决方法:
yum -y install sqlite-devel
checking for oniguruma... no
configure: error: Package requirements (oniguruma) were not met:
Package 'oniguruma', required by 'virtual:world', not found
解决方法:
yum install oniguruma oniguruma-devel
安装完毕再次编译,成功!
make && make install
安装成功!下面再安装一个扩展,扩展是redis 5.3.7
在redis 5.3.7安装包目录下执行:
/application/php8/bin/phpize
./configure --with-php-config=/application/php8/bin/php-config
make && make install
成功后,redis.so文件会出现在/application/php8/lib/php/extensions/no-debug-non-zts-20200930/下面。之后在/application/php8/lib/php.ini文件中添加:
extension=/application/php8/lib/php/extensions/no-debug-non-zts-20200930/redis.so
下面是修改配置文件和启动脚本。
先将/application/php8/lib/php8/sbin/php-fpm复制一份,改名为php-fpm8备用。
编辑/application/php8/lib/php8/etc/php-fpm.d/www.conf
如图修改用户和端口。因为要同时运行多个php版本,默认端口9000已经被php7.1.33占用,端口必须修改为一个未被占用的端口。
编辑 /application/php8/lib/php8/etc/php-fpm.conf
修改php安装路径为/application/php8以及调用www.conf文件的路径。
可以使用php7的启动脚本,复制后改名为php-fpm8,编辑该启动脚本
安装路径为/application/php8,start函数按如下图修改
启动脚本stop函数内按如下图修改:
测试启动脚本
如图所见,php8启动脚本运行start和stop前后服务,状态正常。