最近想安装 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
需要选择合适的下载地址, 否则下载会很慢
由于这台服务器在香港, 所以选择香港的下载地址
首先随意点击一个下载地址进行下载
然后让下载停止, 并且拷贝下载链接
或者是直接下载到本地然后上传到服务器, 这里采用 wget 下载
拷贝地址之后得到这样的下载地址 :
补充 :
你的服务器在哪个国家, 只要前面加上缩写前缀就可以了
然后进入服务器, 进入你要下载存放的目录
输入命令 :
wget http://cn.php.net/distributions/php-5.6.31.tar.gz
下载完成之后, 解压
tar zxvf php-5.6.31.tar.gz
之后进入 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
这里包含了很多组建, 可以通过自己的需要只挑选自己需要的组件
看到和如下一样的图表示配置已经完成
接下来进行编译
make
这一步花费的时间非常长, 耐心等待就可以了
如果看到这一步就说明已经编译成功了
补充 : PHP 5.4 安装的时候, 会提示
configure: error: libXpm.(a|so) not found.
这是因为我们的系统是 64 位的
需要执行下面的命令 :
ln -s /usr/lib64/libXpm.so* /usr/lib/
接下来安装就可以了
make install
接下来要对一些文件进行配置
创建 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 配置文件之后
输入网址, 就可以看到是否共存正常
值得提醒的是, 在配置 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 上运行了