php升级的坎坷之路
yum install -y php php-bcmath php-cli php-common php-devel php-fpm php-gd php-intl php-ldap php-mbstring php-
mysqlnd php-odbc php-pdo php-pear php-pecl-xmlrpc php-pecl-zip php-process php-snmp php-soap php-sodium php-xml
php版本升级爬坑日记
题记:
本人是一个严重的保守派,比较害怕改变,尤其是碰到风险和机遇并存的时候,我一般选择“一动不动”。
服务器上的大多数东西,程序主要是php的都是5.4.6的版本,一个在现在看来非常古老的版本,(当时可以说是洋洋得意的,笑哭
),现在准备升级啦。
为啥要升级?你不是一个典型的拓荒者?
因为要与时俱进啊,啊呸,当然不是,主要是composer安装依赖也要php7以上的版本,卧了个大槽。另外ci框架也推出了4.0版本,
像我这样一个老玩家,自然是非常拥护的,(题外话,4.0我觉得有点难用啊,也可能我太墨守成规了)。
现在开始我还有机会么?我这个linux战五渣,我要开始啦!
正文:
传言,我现在的nginx可以支持多版本。
看到这个消息,我去,好事,问了大牛,大牛告诉我,这可以使用socket套接即可。啥玩意儿?怎么玩?
在我的苦苦哀求下,我开始使用生涩到并不熟练的ssh,打开putty,开搞。
你要这样写。
yum install -y php php-bcmath php-cli php-common php-devel php-fpm php-gd php-intl php-ldap php-mbstring php-
mysqlnd php-odbc php-pdo php-pear php-pecl-xmlrpc php-pecl-zip php-process php-snmp php-soap php-sodium php-xml
没反应,提示没有存在的yum源。这。。。。
大牛告诉要,首先你要使用别名来进行对现有的进行区别。
如果没有源的话,就是你的center太老了,自己查找下,看看
yum search php
看看有哪些版本的PHP
如果没有使用remi的源吧,参考https://itlanyan.com/install-newest-php7-and-php8-with-remi-repo/
# CentOS 8安装
yum install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-8.rpm
# CentOS 7安装
yum install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm
# CentOS 6将于11月30号(本月底)停止维护,不再建议使用
yum install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-6.rpm
此外建议安装 yum-utils 包,提供启用、禁用源等实用功能:
yum install yum-utils
我们当然想使用挑战下多版本的php,就用那个什么socket来搞
使用别名,开始。全部加前缀php81,我擦,我摊牌了,直接到帝国时代,安装php8.1版本
yum install -y php php81-php-bcmath php81-php-cli php81-php-common php81-php-devel php81-php-fpm php81-php-gd
php81-php-intl php81-php-ldap php81-php-mbstring php81-php-mysqlnd php81-php-odbc php81-php-pdo php81-php-pear
php81-php-pecl-xmlrpc php81-php-pecl-zip php81-php-process php81-php-snmp php81-php-soap php81-php-sodium php81-
php-xml
这次很顺利啊
使用php81 -v看版本,熟悉的味道。来了。
systemctl restart php81-php-fpm 走下这个看看
Job for php81-php-fpm.service failed because the control process exited with error code. See "systemctl status
php81-php-fpm.service" and "journalctl -xe" for details.
这是纯纯不给我面子啊
按照提示继续
systemctl status php81-php-fpm.service -l
ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
好像告诉我9000端口被占用,废话,我9000是给php5.4.6的老古董的。
开始改造下,查找php81-php-fpm的位置
find / -name php81-php-fpm
不好意思好像不对,我们一般使用remi源,他会独立的放在 etc/opt/remi/php81下面。
我们cd一下。切换目录
cd /etc/opt/remi/php81/
我们就看到了php-fpm.d
进去发现了www.conf,打开,找到listen,修改为socket模式
修改tcp模式为socket
listen = /run/php81-fpm/www.sock
cd /run
mkdir php81-fpm
然后我就要再次尝试
systemctl restart php81-php-fpm
我擦,神奇的事情发生了,成功啦!!!
接下来我们开始修改nginx的配置修改:
fastcgi_pass unix:/run/php81-fpm/www.sock;
service nginx reload
然后打开相关的网页发现
502 Bad Gateway
怎么办?查日志
自己看vi nginx.conf中error_log的信息位置
然后我就发现了这个信息
[crit] 13382#13382: *92662 connect() to unix:/run/php81-fpm/www.sock failed
猜测是权限问题
给了权限之后,发现了另外的问题,就是还是打不开。acess diend
这里我们依然认为是php-fpm的配置出现了,问题,如下:www.conf
用户组,全部把apache改成nginx,问题解决。
记得修改www.conf中权限0660 改成0666,否则会重置www.sock的用户名为root,蛋碎一地。
php版本升级爬坑日记