步骤和原理
- PHP 官网下载 php 安装包
- 分配安装路径
- 修改 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
了。