步骤和原理

  1. PHP 官网下载 php 安装包
  2. 分配安装路径
  3. 修改 php-fpm 端口

下载和安装

打开 PHP 官网下载 选择需要的版本,比如 PHP 7.2.31

wget https://www.php.net/distributions/php-7.2.31.tar.gz
tar xvf php-7.2.31.tar.gz
cd ./php-7.2.31

编译安装

注意不同的版本设置路径要区别,

  • --prefix= 设置需要安装的路径
  • --with-config-file-path= 设置配置文件路径
./configure --prefix=/usr/local/php72 --with-config-file-path=/usr/local/php72/etc --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gd --with-jpeg-dir --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 --enable-apc

make && make install

在安装的时候需要一些依赖问题,比如curl

在 make 的时候会提示缺少所需安装的第三方

yum install  gcc autoconf gcc-c++ libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel readline readline-devel libxslt libxslt-devel systemd-devel openjpeg-devel patch m4 bison bzip2-devel pam-devel gmp-devel libicu-devel curl-devel pcre-devel libtool-libs libtool-ltdl-devel libwebp-devel libXpm-devel libvpx-devel libjpeg-devel libpng-devel freetype-devel oniguruma-devel aspell-devel enchant-devel readline-devel unixODBC-devel libtidy-devel openldap-devel libxslt-devel net-snmp net-snmp-devel libjpeg-turbo-devel

使用第三发源来安装 PHP

yum install epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm


# 安装 php7.2 到 /usr/local ,防止冲突
yum search php72
yum install php72w php72w-common php72w-cli php72w-fpm php72w-mysql php72w-gd php72w-xml php72w-mbstring php72w-pecl-redis

pecl

在使用不同版本的php的时候,也需要对应安装位置的 /bin/pecl 来安装插件。

配置

修改 /usr/local/php72/etc/php-fpm.d/www.conf(假设安装路径为 /usr/local/php72), 修改

listen = 127.0.0.1:9001

默认的 9000 端口已被默认的占用,这里使用了 9001

运行

执行 php-fpm 来运行服务,

/usr/local/php72/sbin/php-fpm &

这里可以自己自建 systemd 的配置文件来管理服务,比如在 /etc/systemd/system 路径下创建 php72.service

默认的PHP-fpm服务在 /usr/lib/systemd/system/php-fpm.service, copy文件后修改php-fpm 路径即可

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=notify
PIDFile=/var/run/php-fpm/php-fpm.pid
EnvironmentFile=/etc/sysconfig/php-fpm
ExecStart=/usr/local/php72/sbin/php-fpm --nodaemonize
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

然后 systemctl daemon-reload 来加载变动的服务文件,在 systemctl中就应该看到 php72了。