of is a super simple solution with multiple versions of php co existing under Linux systems

  • 2020-12-05 17:31:55
  • OfStack

Since the release of php7, I, as the latest version control, immediately upgraded my experience, but due to the old programs running on the server, I had to deploy an php multi-version coexistence environment.

The existing environment is lnmp
- CentOS 6.7
- nginx 1.10.1
- mariadb-10.0.26
- php 7.0.8

5.4.45 is recommended for better compatibility with older php programs. mysql extensions are mainly compatible.

Start the installation

First download the ES22en-5.4.45.tar. gz source package.

Install through source code


# tar xzvf php-5.4.45.tar.gz
# cd php-5.4.45

# ./configure --prefix=/usr/local/php54 --with-config-file-path=/usr/local/php54/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir=/usr/local/freetype --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --disable-fileinfo --enable-intl --with-xsl

# make ZEND_EXTRA_LIBS='-liconv'
# make install
# cp php.ini-production /usr/local/php/etc/php.ini

php. ini configuration


post_max_size = 50M
upload_max_filesize = 50M
date.timezone = PRC
short_open_tag = On
cgi.fix_pathinfo=0
max_execution_time = 300
disable_functions=passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server

php - fpm. conf configuration


# vim /usr/local/php/etc/php-fpm.conf

[global]
pid = /usr/local/php54/var/run/php-fpm.pid
error_log = /usr/local/php54/var/log/php-fpm.log
log_level = notice

[www]
listen = /tmp/php54-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1:9001
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 40
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 40
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/slow.log

Note: The focus is on configuring listening ports and processes

Start the php - fpm


# cp sapi/fpm/init.d.php-fpm /etc/init.d/php54-fpm
# chmod +x /etc/init.d/php54-fpm
# /etc/init.d/php54-fpm start

Modify the nginx configuration to use ES54en-5.4.45 for the required service configuration


location ~ [^/]\.php(/|$)
 {
  try_files $uri =404;
  fastcgi_pass unix:/tmp/php54-cgi.sock;
  fastcgi_index index.php;
  include fastcgi.conf;
 }

The php54-ES60en with ES58en-5.4.45 will start automatically when you start the machine


# chkconfig --add php54-fpm
# chkconfig php54-fpm on

chkconfig function description: Check and set up various services of the system.
Syntax: chkconfig [WM_ES67en][WM_ES68en][WM_ES69en][System Services]
chkconfig [� level < Level code > ][System Services][on/off/reset]

The focus of this program is

Each VERSION of PHP will be installed in a new, separate folder

The php-ES87en.conf configuration file for each version of PHP requires a different process name and listener port to be set

The nginx configuration file specifies the PHP version to be used to listen on the port or process name


Related articles: