注:看这篇文章之前,请先确保你有一定服务器的操作知识和一定的php基础,不然的话清尽量找相对熟悉的人指导操作,如果升级中发生任何不可挽回的问题,本人不对其负任何责任。
下载你需要的php版本并解压
我下载的是7.3.4版本
wget http://cn2.php.net/distributions/php-7.3.4.tar.gz tar zxvf php-7.3.4.tar.gz cd php-7.3.4
准备安装
生成配置文件
[root@ php-7.3.4]# ./buildconf buildconf: checking installation... buildconf: autoconf version 2.69 (ok) rebuilding aclocal.m4 rebuilding configure rebuilding main/php_config.h.in
开始配置
下面这条命令是配置php7的安装明细,你需要关心以下几点:
- 我升级php7是为了支持wordpress
- 核心的模块是
- mysql[可选]
- mysqli
- pdo-mysql
- 当前配置
php-fpm
用户组是www,你可以根据你机器的情况再进行修改
[root@ php-7.3.4]# ./configure --prefix=/usr/local/php --exec-prefix=/usr/local/php --bindir=/usr/local/php/bin --sbindir=/usr/local/php/sbin --includedir=/usr/local/php/include --libdir=/usr/local/php/lib/php --mandir=/usr/local/php/php/man --with-config-file-path=/usr/local/php/etc --with-mysql-sock=/var/run/mysql/mysql.sock --with-mcrypt=/usr/include --with-mhash --with-openssl --with-mysql=shared,mysqlnd --with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --with-gd --with-iconv --with-zlib --enable-zip --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache --enable-fpm --enable-fastcgi --with-fpm-user=www --with-fpm-group=www --without-gdbm --disable-fileinfo
该配置执行后,需要结果中没有报错,才算成功(不算warning)。
如果碰到了问题,就根据问题解决问题,我碰到了如下的问题:
- libzip版本不对
开始编译和安装
执行下面代码
[root@ php-7.3.4]# make clean && make && make install
该过程根据网速时间可能会比较长。
该安装执行后,结果中没有报错,才算成功。
完成后需要执行 make test
来进行安装检验,这里没碰到问题,所以这里不做深究。
如果碰到了问题,就根据问题解决问题,我碰到了如下的问题:
- cp: cannot stat `ext/phar/phar.phar’: No such file or directory
验证模块是否安装到对应目录
上面提到了几个核心模块:
- mysql[可选]
- mysqli
- pdo-mysql
如果你没有特殊做配置,文件一般在 /usr/local/php/lib/php/extensions/no-debug-non-zts-xxxxx
下面
可以参考下图:
配置文件
主要需要配置以下文件
- php.ini
- php-fpm.conf
- www.conf
[root@ php-7.3.4]# cp php.ini-production /usr/local/php/etc/php.ini [root@ php-7.3.4]# cp /root/php-src-master/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm [root@ php-7.3.4]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf [root@ php-7.3.4]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
php.ini
需要将上面的核心模块在 php.ini
中设置为开启,将下面代码添加到 php.ini
末尾
[php] zend_extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-xxxxx/opcache.so extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-xxxxx/mysqli.so extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-xxxxx/pdo_mysql.so
这里要注意的是我为了保险起见在这里设置了绝对路径,你可以根据个人习惯选择使用相对路径。
php-fpm.conf
这里主要是添加日志和配置文件,将下面代码添加到 php-fpm.conf
末尾
######设置错误日志的路径 error_log = /var/log/php-fpm/error.log ######引入www.conf文件中的配置 include=/usr/local/php7/etc/php-fpm.d/*.conf
www.conf
这里是 php-fpm
的进程服务扩展配置
######设置用户和用户组 user = www group = www listen.owner = www listen.group = www listen.mode = 0660 ######根据nginx.conf中的配置fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;设置PHP监听 ; listen = 127.0.0.1:9000 #####不建议使用 listen = /var/run/php-fpm/php-fpm.sock ######开启慢日志 slowlog = /var/log/php-fpm/$pool-slow.log request_slowlog_timeout = 10s ######设置php的session目录(所属用户和用户组都是nginx) php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session
其他配置
添加php环境变量
[root@ ~]# echo -e '\nexport PATH=/usr/local/php/bin:/usr/local/php7/sbin:$PATH\n' >> /etc/profile && source /etc/profile
设置PHP日志目录和php-fpm进程文件(php-fpm.sock)目录
#######设置PHP日志目录和php-fpm的运行进程ID文件(php-fpm.sock)目录 [root@ ~]# mkdir -p /var/log/php-fpm/ && mkdir -p /var/run/php-fpm && cd /var/run/ && chown -R nginx:nginx php-fpm #######修改session的目录配置 [root@ etc]# mkdir -p /var/lib/php/session [root@ etc]# chown -R www:www /var/lib/php
设置PHP开机启动以及测试配置文件是否正确
######配置开机自启动,增加到主机sysV服务 [root@ php-7.3.4]# chmod +x /etc/init.d/php-fpm [root@ php-7.3.4]# chkconfig --add php-fpm [root@ php-7.3.4]# chkconfig php-fpm on ######测试PHP的配置文件是否正确合法 [root@ sbin]# php-fpm -t [03-Apr-2019 17:50:04] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful
启动服务
[root@ ]# /etc/init.d/php-fpm start Starting php-fpm done
通过命令 ps -aux|grep php
查看启动服务是否成功;
通过命令 php -v
查看升级是否成功;
通过查看 phpinfo.php
页面查看模块是否安装成功;
因为wordpress升级的php7
如果你是因为wordpress升级的php7,那么下面的内容你可能会感兴趣。
nginx
如果nginx启动后页面显示502,你就查一下nginx的日志,我碰到了以下几个问题:
- fastcgi_pass报错
- 这里可以看一下上面www.conf配置的第10行,看到
listen = /var/run/php-fpm/php-fpm.sock
- 那么你的nginx.conf的配置应该让fastcgi_pass也指向这一行
fastcgi_pass unix: /var/run/php-fpm/php-fpm.sock
- 如果你有另一个配置
fastcgi_pass unix:/tmp/php-cgi.sock
那么请注释掉 Call to undefined function mysqli_connect
找不到mysqli_connect方法- 查看php里面的mysqli组件是否没有安装好,可以通过
phpinfo.php
查看到
如果你的nginx没问题了,但是进入wordpress提示建立数据库连接错误,那就去检查 wp-config.php
里面数据库里面的主机设置是不是 localhost
,如果是就改为 127.0.0.1
就好了,同样的方法也适用于 phpMyAdmin
。
问题整理
libzip升级
yum remove libzip -y wget https://nih.at/libzip/libzip-1.2.0.tar.gz tar -zxvf libzip-1.2.0.tar.gz cd libzip-1.2.0 ./configure make && make install ldconfig
cp: cannot stat `ext/phar/phar.phar’: No such file or directory
进入你的php安装目录
cd ext/phar/ ls -l cp ./phar.php ./phar.phar make install
Nginx: [error] open() "/usr/local/Nginx/logs/Nginx.pid” failed(2:No such file or directory)
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ZendGuardLoader.so: undefined symbol:
php7不再支持该模块,在 php.ini
中移除该模块。
文章安装及配置部分参考:https://typecodes.com/web/centos7compilephp7.html?utm_source=tuicool&utm_medium=referral