学习笔记

  > php升级的坎坷之路

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,蛋碎一地。

发布时间:2023-02-21,17:33:00

php版本升级爬坑日记

作者:澎蠡

让学习成为一种习惯,让知识交流变成一种生活方式。