最近想安装 Discuz! X3.2

因为服务器只安装了 PHP 7, 而 Discuz! X3.2 没记错的话应该是 14 年的产品了, 所以肯定不支持 PHP 7

所以这里就需要 PHP 5

在网上搜了一下, 没有搜到很好的教程, 很多教程安装下来都有很多莫名其妙的错误, 所以决定自己动手实践

使用 yum 安装肯定是不可能了, 因为已经存在一个 PHP 7 了, 所以这里用编译安装

首先去 php.net 下载最新版本的 PHP 5

到发稿为止, 最新的 PHP 5 版本是 PHP 5.6.31

下载地址 : http://php.net/get/php-5.6.31.tar.gz/from/a/mirror

需要选择合适的下载地址, 否则下载会很慢

由于这台服务器在香港, 所以选择香港的下载地址

首先随意点击一个下载地址进行下载

CentOS 7 和 Nginx 下实现多版本 PHP 的共存-Jonny'Blog

然后让下载停止, 并且拷贝下载链接

或者是直接下载到本地然后上传到服务器, 这里采用 wget 下载

CentOS 7 和 Nginx 下实现多版本 PHP 的共存-Jonny'Blog

拷贝地址之后得到这样的下载地址 :

http://cn.php.net/distributions/php-5.6.31.tar.gz

补充 :

PHP 5.5.37 --- http://php.net/distributions/php-5.5.37.tar.gz

PHP 5.4.45 --- http://php.net/distributions/php-5.4.45.tar.gz

PHP 5.3.29 --- http://php.net/distributions/php-5.3.29.tar.gz

你的服务器在哪个国家, 只要前面加上缩写前缀就可以了

然后进入服务器, 进入你要下载存放的目录

输入命令 :

wget http://cn.php.net/distributions/php-5.6.31.tar.gz
CentOS 7 和 Nginx 下实现多版本 PHP 的共存-Jonny'Blog

下载完成之后, 解压

tar zxvf php-5.6.31.tar.gz
CentOS 7 和 Nginx 下实现多版本 PHP 的共存-Jonny'Blog

之后进入 PHP-5.6.30 目录

cd php-5.6.31

接下来可以进行 PHP 5 的安装了

PHP 5 的安装由于采用编译安装, 所以会比 PHP 7 的 yum 安装要麻烦一点

首先进行配置

但是配置需要在一定的环境中进行, 所以这里需要安装环境和依赖

yum install -y gcc gcc-c++ libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel sqlite-devel bzip2-devel libXpm-devel libmcrypt libmcrypt-devel libcurl libcurl-devel libicu libicu-devel icu

之后输入命令

./configure --prefix=/usr/local/php5 --enable-fpm --with-mysql --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo --enable-mbregex --enable-phar --enable-posix --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-zip --enable-inline-optimization --enable-intl --with-icu-dir=/usr --with-gd --with-xpm-dir --with-bz2 --with-gettext --with-iconv --with-mcrypt --with-mhash --with-zlib --with-pcre-regex --with-regex
--prefix=要安装的目录

这条命令是 PHP 5 的安装路径, 可以自行选择, 修改之后后面也要记得修改

补充 :

PHP 5.5 的安装命令

./configure --prefix=/usr/local/php55 --enable-fpm --with-mysql --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo --enable-mbregex --enable-phar --enable-posix --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-zip --enable-inline-optimization --enable-intl --with-icu-dir=/usr --with-gd --with-xpm-dir --with-bz2 --with-gettext --with-iconv --with-mcrypt --with-mhash --with-zlib --with-pcre-regex --with-regex

PHP 5.4 的安装命令

./configure --prefix=/usr/local/php54 --enable-fpm --with-mysql --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo --enable-mbregex --enable-phar --enable-posix --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-zip --enable-inline-optimization --enable-intl --with-icu-dir=/usr --with-gd --with-xpm-dir --with-bz2 --with-gettext --with-iconv --with-mcrypt --with-mhash --with-zlib --with-pcre-regex --with-regex

这里包含了很多组建, 可以通过自己的需要只挑选自己需要的组件

看到和如下一样的图表示配置已经完成

CentOS 7 和 Nginx 下实现多版本 PHP 的共存-Jonny'Blog

接下来进行编译

make

这一步花费的时间非常长, 耐心等待就可以了

CentOS 7 和 Nginx 下实现多版本 PHP 的共存-Jonny'Blog

如果看到这一步就说明已经编译成功了

补充 : PHP 5.4 安装的时候, 会提示

configure: error: libXpm.(a|so) not found.

这是因为我们的系统是 64 位的

需要执行下面的命令 :

ln -s /usr/lib64/libXpm.so* /usr/lib/

接下来安装就可以了

make install
CentOS 7 和 Nginx 下实现多版本 PHP 的共存-Jonny'Blog

接下来要对一些文件进行配置

创建 PHP 配置文件, 并且编辑

cp php.ini-development /usr/local/php5/lib/php.ini
vi /usr/local/php5/lib/php.ini

按 "/" 输入

mysql.default_socket

进行查找

并且修改为

mysql.default_socket = /var/lib/mysql/mysql.sock

继续查找

mysqli.default_socket

并且修改为

mysqli.default_socket = /var/lib/mysql/mysql.sock

查找

date.timezone

去掉前面的 ";", 并且修改为

date.timezone = PRC

接下来修改 PHP 上传限制, 找到

max_execution_time

将后面的 30 改成 0

找到

post_max_size

将后面的数字改成你想要的, 单位 M

找到

upload_max_filesize

将后面的数字改成你想要的, 单位 M

到此为止 PHP 的配置已经完成了, 接下来配置 PHP-FPM

首先创建 PHP-FPM 的配置文件

cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf

并且编辑

vi /usr/local/php5/etc/php-fpm.conf

找到

user = nobody
group = nobody

将其中的 nobody 改为 nginx

user = nginx
group = nginx

找到

listen = 127.0.0.1:9000

改为

listen = 127.0.0.1:9001

因为 PHP 7 的 PHP-FPM 已经占用了 9000 端口, 这里给 PHP 5 分配 9001端口

接下来配置 PHP-FPM 服务

cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/php5-fpm.service

并且编辑

vi /usr/lib/systemd/system/php5-fpm.service

PIDFile=${prefix}/var/run/php-fpm.pid
ExecStart=${exec_prefix}/sbin/php-fpm --nodaemonize --fpm-config ${prefix}/etc/php-fpm.conf

其中的

${prefix}

${exec_prefix}

改为你刚刚安装 PHP 5 的路径

如果按照本文方式安装, 即

PIDFile=/usr/local/php5/var/run/php-fpm.pid
ExecStart=/usr/local/php5/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php5/etc/php-fpm.conf

重新载入 systemd

systemctl daemon-reload

启动 PHP5-FPM

systemctl start php5-fpm

如果要设置开机启动

systemctl enable php5-fpm

接下来用 PHP 信息页对 PHP 5 的安装进行测试

在建立 info.php 信息页和配置完 Nginx 配置文件之后

输入网址, 就可以看到是否共存正常

CentOS 7 和 Nginx 下实现多版本 PHP 的共存-Jonny'BlogCentOS 7 和 Nginx 下实现多版本 PHP 的共存-Jonny'Blog

值得提醒的是, 在配置 Nginx 的过程中, 由于 PHP 5 对应的端口是 9001, 并不是 9000

所以, 需要将 Nginx 配置文件中的

fastcgi_pass 127.0.0.1:9000;

改为

fastcgi_pass 127.0.0.1:9001;

以下是一份完整的实例

server {

    listen 80;

    server_name php5-demo.jonny.website;

    root /www/php5-demo;

    location / {

        index index.php index.html index.htm;

    }

    location ~ \.php$ {

        fastcgi_pass 127.0.0.1:9001;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        include fastcgi_params;

    }

}

接下来, 你就可以上传相关的网站程序在 PHP 5 上运行了

有冇興趣評分畀呢篇文章?