记一次生产升级事件(php)

阿里云centos7.5关于PHP5.x升级到7.x的升级的生产操作 还有两个月停止PHP 5.x的安全支持 根据 PHP 官方网站列出的支持版本及时刻表(如下),PHP 5.6及以下版本 安全支持将于2018年12月31日终止。即两个半月后,使用 PHP 5.6 版本的网站将不再收到安全漏洞或错误更新。较新的PHP 7.0更将在今年12月1日EOL(end of lifecycle),不再提供安全支持,连7.1版也将在12月1日终止主要支持,一年后结束安全支持。... 阅读详情

背景

咸鱼君所在公司的安全部门, 扫描出项目的生产服务安全漏洞,并且很负责任的提供了两份扫描文档,

一份针对nginx(1.1.6),
一份针对php(7.1.3),

并限期一周内改善完!

咸鱼君粗略一扫,全都是服务软件的漏洞,

于是乎, 两个选择摆在眼前:

1.根据文档,按图索骥, 一个补丁一个补丁的“劳模打补丁”;
2.直接升级软件到最新版, 当然, 得确保服务的代码必须要适配!

于是咸鱼君“认真”考虑了一下(实在是懒,补丁太多,当然,也是觉得升级了对应用代码影响不大), 决定升级服务软件来解决漏洞!

下面,详细介绍咸鱼君的升级过程~

评估升级风险!

有相似需求的朋友一定要认真评估“直接升级服务软件版本”方案是否适合自己的业务, 因为服务软件的版本每次升级都会有些变化, 比如php就会舍弃一些函数, 万一项目代码用到了, 结果你直接升级了php
, 最后导致生产的服务代码跑不起来,那就悲剧了!!

评估升级风险的方式,咸鱼君采用的是本地升级服务软件,测试项目代码是否正常~

有条件的也可以搞台克隆生产环境的服务器, 而后测试升级操作~

备份备份备份!

先找到php 的安装目录
whereis php
查看当前版本(7.1.3)
/usr/local/php/bin/php -v 
查看当前configure编译参数.这个要保存下,编译新php时要用!
php -i | grep configure 

这里列出来的数据格式不对,需要处理一下,建议小伙伴保存在txt中,然后将单引号“ ’ ”替换为空值即可

 ./configure  
--prefix=/usr/local/php
 --with-config-file-
path=/usr/local/php/etc 
--enable-fpm 
--with-mcrypt 
--enable-mbstring 
--enable-pdo 
--with-curl 
--disable-debug 
--disable-rpath 
--enable-inline-optimization 
--with-bz2 
--with-zlib 
--enable-sockets 
--enable-sysvsem 
--enable-sysvshm 
--enable-pcntl 
--enable-mbregex 
--with-mhash 
--enable-zip 
--with-pcre-regex 
--with-mysqli 
--with-gd 
--with-jpeg-dir 
--with-freetype-dir 
--enable-calendar 
--with-openssl 
--with-png-dir 
--with-zlib-dir 
--enable-gd-native-ttf 
--with-xsl 
--with-gettext 
--with-pdo-mysql
备份旧版的php文件夹
sudo cp -r /usr/local/php  /usr/local/php_7.1_bac 

php升级

接下来我们去 https://www.php.net/downloads.php找到合适的稳定的php版本来下载, 记得一定要详细看change log,来决定要不要升级! 否则生产的服务代码因为版本问题挂了,那就悲剧了!! 咸鱼君考察后,选择了 php7.4.4稳定版,粗略一看,应该没问题(事实上后面发现了个小问题!险些悲剧!)
下载
//切换会用户目录(下载文件时先切换自己的目录,这是个好习惯!)
cd ~ 
wget https://www.php.net/distributions/php-7.4.4.tar.gz 
解压
tar -zxvf php-7.4.4.tar.gz
配置编译参数 (注意, 这里有很多问题, 为了流程的连贯性, 建议先往下看,读完全文, 最后再执行, 咸鱼君实力踩坑!)
cd php-7.4.4
//这里的***代表之前保存的编译参数
//但是php7.4.4和之前的有些许不同,所以需要大家先转换!!!!
//务必先不要执行,看完全文再执行,免得踩坑~
./configure  --prefix=*** 
编译
sudo make
安装
sudo make install
恢复配置
cd /usr/local/php_7.1_bac/
sudo cp etc/php.ini  /usr/local/php/etc/php.ini
sudo cp etc/php-fpm.conf /usr/local/php/etc/php-fpm.conf
sudo cp etc/php-fpm.d/www.conf /usr/local/php/etc/php-fpm.d/
切换新版php
//平滑重启
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

//当然,有时候急于等待结果的话,可以杀死再重启(不建议)
//咸鱼君为了快速验证,所以采用杀死再重启的方式,小伙伴们视实际情况而定
cd /usr/local/php/sbin/
sudo killall php-fpm
sudo ./php-fpm
最后,确认服务正常,去访问下生产的服务,是不是正常,如果发现不对,立刻执行以下命令恢复旧php
cd /usr/local
sudo killall php-fpm
sudo rm -r php
sudo cp -r php_7.1_bac/  php
sudo /php/sbin/php-fpm

如果真像上面罗列的升级过程一样简单就好了,事实上,咸鱼君升级php7.4.4的过程中碰到了很多的,并且有些问题是网上找不到明确解答的!, 接下来听咸鱼君细细道来~

php编译期间缺包问题

No package ‘*******’ found

碰到这问题很好解决,缺啥装啥即可!
这里咸鱼君碰到了如下的包缺失问题, 要是你碰到的和我不一样,没关系, 网上这类的问题解决贴一大把,主要因系统环境而异!

No package ‘libjpeg’ found
sudo yum install libjpeg libjpeg-devel
No package ‘libxml-2.0’ found
sudo yum -y install libxml2
sudo yum -y install libxml2-devel
No package ‘sqlite3’ found
sudo yum install sqlite-devel
No package ‘oniguruma’ found
sudo yum install oniguruma oniguruma-devel
No package ‘libpng’ found
sudo yum install libpng-devel

以上包都很好解决,下面这个包有点“意思”,

No package ‘libzip’ found

或

Please reinstall the libzip distributio 或 configure: error: system libzip must be upgraded to version >= 0.11
这个包比较特别, 不知道是不是php7.4.4的适配问题, 咸鱼君发现 yum install 安装的版本比较低,并且下载的1.2.1这个包安装上还是识别不了,只有1.2.0可以用!!!
yum remove libzip libzip-devel     //卸载yum安装的低版本
wget https://nih.at/libzip/libzip-1.2.0.tar.gz
tar -xvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make
////这句一定要执行,不然编译安装php还是报错找不到!!
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"   
sudo ldconfig
sudo make install

php执行时加载“.so”扩展失败问题

咸鱼君安装完各种包,兴冲冲的执行

cd /usr/local/php/sbin/
sudo killall php-fpm
sudo ./php-fpm

时,发现,报错

PHP Warning: PHP Startup: Unable to load dynamic library “******.so”

好吧, 折腾呗!
根本原因就是, 原来编译安装的扩展, 比如“redis”这类的,只适用于当时的php, 所以我们要想继续使用, 则必须得用新的php重新编译这些扩展,重新安装!

这里注意的时,有些扩展在php的安装包里就有,所以不用额外去下载~

Unable to load dynamic library “ bcmath.so”
cd php-7.4.4/ext/bcmath 
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
sudo make
sudo make install
Unable to load dynamic library “redis.so”
wget https://pecl.php.net/get/redis-5.2.1.tgz
tar -axvf redis-5.2.1.tgz
cd redis-5.2.1
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
sudo make
sudo make install

咸鱼君就碰到这两个, 安装完后

cd /usr/local/php/sbin/
sudo killall php-fpm
sudo ./php-fpm

好吧,再次报错, 原来是新的扩展打上后, 扩展路径和以前不一样了,所以需要修改php.ini, 注意, 安装扩展时,有返回一个安装路径, extension_dir这填充这个路径即可

sudo vim /usr/local/php/etc/php.ini

修改

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/"

最后

cd /usr/local/php/sbin/
sudo killall php-fpm
sudo ./php-fpm

好的,好像没问题了!!(剧透, 接下来有两个大坑!!!)

检查服务正常阶段

看似nginx和php都升级成功了,也不曾有报错了!
接下来我们来到最后阶段, 访问下项目, 看下是不是正常运行!!

大坑一: 验证码不显示!

咸鱼君项目采用的是Laravel5.6 + captcha做的验证码展示, 结果升级后发现,验证码显示不出来, 图片请求全是500错误, 打开Laravel Debug模式,看到报错

Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined function Intervention\Image\Gd\imagettfbbox()

一看, php的gd扩展有问题啊!!!
赶紧去ssh生产,查看gd扩展是不是正常安装的

php -m | grep gd

发现, gd扩展是有的!
这就奇怪了, 随后网上搜索下, 发现了各种“大佬”帖子的“解决方案”
大致方案如下

  1. php重新编译gd扩展
  2. 独立下载gd扩展编译安装
    ………………
    好吧, 咸鱼君尝试了, 并没什么用!
    这里就不发出这类的“解决方案”了,免得小伙伴们和我一样走“歪路”!

下面是重点了, 解决方案如下

问题原因

其实这个问题的确和 gd 扩展有关系, 主要是和gd扩展的子扩展freetype有关系!
你需要先判断生产环境是不是安装了freetype

//查看freetype安装目录
find / -name freetype  

要是安装了, 则编写一个小php脚本来判断有没有正确加载
gdtest.php

<?php

if(extension_loaded(gd)){
echo "can use gd<br>";
foreach(gd_info() as $cate=>$value)
echo "$cate: $value<br>";
}else
echo "can not use gd";
?>

执行

php test.php

结果:

can use gd
GD Version: bundled (2.0.34 compatible)
FreeType Support:                            #这里冒号后面没有值,说明gd不支持freetype
T1Lib Support:
GIF Read Support: 1
GIF Create Support: 1
JPEG Support: 1
PNG Support: 1
WBMP Support: 1
XPM Support:
XBM Support: 1
JIS-mapped Japanese Font Support:

若“FreeType Support: ”后为空不为“1”则说明,gd库没有freetype支持!

问题似乎陷入了循环,明明安装了freetype, 但是gd扩展却显示不支持!!! 搜遍互联网,咸鱼君得到的全都是“重装freetype”,“重装gd扩展”,甚至“重装php”的“解决方案”!

最后,咸鱼君无疑中看到一篇帖子,关于介绍php7.4.4的configure编译配置参数的变化的! 如下

--with-gd                   改为 --enable-gd
--with-freetype-dir     改为 --with-freetype
--with-jpeg-dir           改为 --with-jpeg
--with-webp-dir         改为 --with-webp
--with-xpm-dir           改为 --with-xpm
--with-libxml-dir         改为  --with-libxml 
--enable-zip              改为 --with-zip
--enable-zlib-dir        改为 --with-zlib

大家看到

--with-freetype-dir     改为 --with-freetype

有没有眼前一亮?!! 是的,真相如此简单, 还记得我们之前

php -i | grep configure

查出的那一堆配置参数么, 我们只需要按图索骥, 把对应的旧版参数替换成新版参数, 然后重新

./configure  --prefix=***
make 
sudo make install

即可!!!

真是坑爹!

另外,咸鱼君罗列的可能不全, 大家可以自行查看新版的参数

 //**代表你需要的扩展参数的关键字,来查看对应的配置方式
./configure -h  | grep **   

最后编译配置php7.4.4的命令为

./configure  
--prefix=/usr/local/php 
--with-config-file-path=/usr/local/php/etc 
--with-php-config=/usr/local/php/bin/php-configure 
--enable-fpm 
--enable-bcmath 
--with-mcrypt 
--enable-mbstring 
--enable-pdo 
--with-curl 
--disable-debug 
--disable-rpath 
--enable-inline-optimization 
--with-bz2 
--with-zlib 
--enable-sockets 
--enable-sysvsem 
--enable-sysvshm 
--enable-pcntl 
--enable-mbregex 
--with-mhash 
--with-zip 
--with-pcre-regex 
--with-mysqli 
--enable-gd 
--with-jpeg 
--with-freetype 
--enable-calendar 
--with-openssl 
--with-png 
--with-zlib 
--with-gd-native-ttf 
--with-xsl 
--with-gettext 
--with-pdo-mysql

大坑二: php7.4.4数组严格验证

满心关系的解决完验证码问题, 登入了项目web后台,却突然发现报错

Trying to access array offset on value of type null

当时, 吓得咸鱼君一身冷汗, 迅速ssh上生产, 先恢复了旧php!

之后,排查得到报错原因

######原来php7.4.4移除了很多notice报错,也就是可能老版的php只是warning,notice级别的报错,在新版里全部以error抛出!

Trying to access array offset on value of type null

就是其中的一种, php7.4.4不允许对值为null的数组不进行判空操作直接使用!

举个例子

$arr = //api返回;
$name = $arr['name'];

这样的操作就会抛出异常,所以我们需要先判断

if(isset($arr['name'])){
    $name = $arr['name'];
}

可以看出,php也在进行一些类型的严格规范了!

修改了这个问题, php就不抛错了, 咸鱼君再次上线了新版php~~

至此, 顺利从php7.1.3升级至7.4.4!!

希望咸鱼君的升级笔记能够帮到需要的小伙伴~

##升级需评估 ,否则要背锅~~

请关注我的订阅号

订阅号.png

wampserver升级到PHP版本到7+ windows系统下,目前wampserver的最高版本为3.0.6,其中的PHP最高版本为7.0.10,博主想要安装laravel5.6最新版本,却看到需要PHP版本>=7.1.3,无奈之下,只能想办法升级wamp的PHP版本到7.1.30以上。其实很简单。 1. 下载要安装的PHP版本https://www.php.net/downloads.php,这里要注意一下x64和x86 ... 阅读详情

相关推荐

[CTFSHOW]JWT

文章目录前言JWT简介CTFSHOW Web345CTFSHOW Web346前置知识开始做题CTFSHOW Web347CTFSHOW Web348CTFSHOW Web349CTFSHOW Web350前置知识利用WP如何防御 前言 有些师傅向我咨询WP,索性就发了吧,其实早就写好了,只是懒,在github仓库里囤着 JWT简介 可以看看我的Github总结给自己看的,Y4tacker CTFSHOW Web345 首先打开题目,查看源码,接下来访问/admin被跳转回主页啥也没有发生 where is

Y4tacker的博客 6040

【Laravel】使用mews/captcha验证码图片不显示,报错 Call to undefined function Intervention\Image\Gd\imagettfbbox()

问题:Call to undefined function Intervention\Image\Gd\imagettfbbox() 本函数同时需要 PHP 开启 GD 库和 FreeType 库。 有了gd扩展还是报错,原因是因为在gd扩展中还应该有个freeType,因此我们需要安装freeType,但是即使安装了freeType,还得重新编译php。 RUN apt-get install -y libpng-dev libfreetype6-dev libjpeg62-turbo-dev \ .

星辰大海 4041

传输线末端短路、开路、加电感的反射系数

时,频率变化约300MHz, 出现这种偏差是因为我们的计算中将电磁波传播速率默认为。时,频率变化约300MHz, 出现这种偏差是因为我们的计算中将电磁波传播速率默认为。下图为用网络分析仪实测一长度为30cm的传输线末端加一0.6uH的线圈的反射系数。下图为用网络分析仪实测一末端短路的长度为30cm的传输线的反射系数。下图为用网络分析仪实测一末端开路的长度为30cm的传输线的反射系数。末端加电感相当于在传输线末端延长了一段后末端短路,使得相位下降速率。幅度为0dB, 相位由。幅度为0dB, 相位由。

johnboat的专栏 1873

Laravel Call to undefined function get()

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34072458的博客 880

从零开始,用Cadence Virtuoso手把手仿真一个1.5V LDO(附完整电路与仿真脚本)

本文详细介绍了如何使用Cadence Virtuoso从零开始仿真一个1.5V LDO,包括环境准备、电路导入、Testbench构建、核心仿真类型分析以及高级调试技巧。通过完整的电路与仿真脚本,帮助读者掌握LDO设计与仿真的关键技术,提升电路设计能力。

weixin_31309419的博客 444

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet,在计算机视觉领域,卷积神经网络(Convolutional Neural Network,CNN)已然成为推动众多任务发展的核心力量。从早期简单的图像识别,到如今复杂的目标检测、语义分割、图像生成等任务,CNN 都展现出了卓越的性能。CNN 的发展历程见证了一系列经典模型的诞生,其中 LeNet 作为开山之作,为 CNN 的发展奠定了基础,而 ResNet 则通过创新性的设计,突破了传统神经网络的限制,使得网络能够构建得更深、性能更优。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 14万+

Laravel部署踩的坑

1. 建新工程的时候忘了换源 解: 2.换了源还不行 解:找php.ini 开启 extension=php_fileinfo.dll扩展 3.

xianzhe6954的博客 684

易盾滑块的js逆向分析

基于易盾的滑块验证码进行逆向分析,最种实现全系列的验证码逆向,包括滑块、点选、推理拼图等多种类型。

shanf7921的博客 3万+

osx 编译安装php,Mac OSX编译安装php7.1.8

laravel中用到ldap认证包,要求php7.0以上版本,而且安装Mews\Captcha包的时候 验证码无法显示 报错如下:Call to undefined function Intervention\Image\Gd\imagettfbbox()搜索发现需要重新编译php,添加 --with-jpeg-dir=DIR1.下载源码 http://mirrors.sohu.com/phpw...

weixin_31147827的博客 336

[内网基础] 内网基础知识 —— Windows 工作组

在一个大型单位里,可能有成百上千台计算机互相连接组成局域网,如果不对这些计算机进行分组,网络的混乱程度是可想而知的。Windows 为了解决这一问题,就产生了工作组(Work Group)这个概念。Windows 工作组尝试将不通的计算机按功能(或部门)分别列入不同的工作组,例如技术部的计算机都列入 “技术部” 工作组、行政部的计算机都列入 “行政部” 工作组。要想访问某个部门的资源,只要在 “网络” 里双击该部门的工作组名,就可以看到该部门里的所有计算机了。

Blue17 の 小窝 1601

探索CompletableFuture:高效异步编程的利器

随着现代软件系统的复杂性和用户需求的多样化,异步编程成为了提升系统性能和响应速度的重要手段。在Java领域,CompletableFuture作为Java 8引入的新特性,提供了强大的异步编程能力,极大地简化了多线程和并发任务的处理。本文将深入探讨CompletableFuture的基本功能和使用方法,介绍如何利用其提升程序的并发性能和代码的可维护性。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 170万+

PHP Fatal error: Call to undefined function imagettfbbox()

今天把网站放到vps服务器上去,报错说PHP Fatal error: Call to undefined function imagettfbbox()经过查资料得出GD库要支持更多的图像格式,所以自己又重新编译了下php ./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt \ --enable-mbstring --

盗墓笔记 7091

别再无脑调打码平台了!聊聊 ddddocr 在爬虫验证码识别中的真实边界

ddddocr是国产开源社区的优秀成果,它大幅降低了验证码识别的入门门槛。工具的自由不等于工程的自由。真正的能力不在于“会不会调库”,而在于能否准确判断工具的适用边界、构建鲁棒的容错机制、并在成本与效果之间做出理性权衡。下次当你准备在爬虫中加入验证码识别时,不妨先问自己:这个站点的验证码类型是否在ddddocr的能力圈内?我的预处理是否针对该站点做过专项调试?我的失败重试和监控机制是否完备?如果三个问题都能肯定回答,那么ddddocr就是你的利器;如果有任何一个犹豫,请先补齐短板再上路。评论区交流:你用。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1279

记一次生产升级事件(nginx)

背景 咸鱼君所在公司的安全部门, 扫描出项目的生产服务安全漏洞,并且很负责任的提供了两份扫描文档, 一份针对nginx(1.1.6), 一份针对php(7.1.3), 并限期一周内改善完! 咸鱼君粗略一扫,全都是服务软件的漏洞, 于是乎, 两个选择摆在眼前: 1.根据文档,按图索骥, 一个补丁一个补丁的“劳模打补丁”; 2.直接升级软件到最新版, 当然, 得确保服务的代码必须要适配! 于是咸鱼君“...

CTO技术的博客 372

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

记php升级后 导致composer命令报错的事件

因使用laravel 7, 要求php在7.2以上, 我的环境还是7.1, 所以就升级为7.3.19 升级完成后,使用composer 出现一下错误 PHP Warning: require(Composer/autoload.php): failed to open stream: No such file or directory in /usr/bin/composer on line 9 Warning: require(Composer/autoload.php): failed

weixin_42411512的博客 1214

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

记一次wordpress网站php版本升级经历

1、问题现象: wordpress后台提示需要更新php70为php74 环境:linux+centos7+lnmp 2、安装php74具体方法: 查看已安装的php的所有包 yum list installed | grep php 换下载源为remi yum install epel-releaserpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm 安装php7.4及相关扩展 yum -y

weixin_67004291的博客 769

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

WordPress网站如何升级PHP

最近一段时间,我的WordPress后台总提示有新版本的WordPress 5.4.1可用,但是它要求PHP 5.6.20或更高,而我目前的版本是PHP 5.5.7,所以决定升级PHP版本。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wrrxm9E4-1590337477368)(http://www.chuyouxiang.com/wp-content/uploads/2020/05/WordPress升级.png)] 但自己对PHP了解不多,先在网上找了一圈文章,比较

楚游香的博客 4140

PHP8 released -- PHP7升级PHP8/PHP8安装

PHP8 released – PHP7升级PHP8 打开优快云一看,天哪,首页居然写着: PHP8发布了,不信不信,拿来这么快的,赶快去官网看看 再官网确认的压力下,我终于松了一口气 这回不会又要来一次PHP5转PHP7吧…于是,我耐心的开始读首页上的那篇文章…https://blog.csdn.net/asasd101/article/details/110233139 这篇文章讲的都是PHP8的新特性,方便程序员们的简单语法改进和安全改进 嗯,这就好,至少兼容PHP7,同时如果你想改进代码也可以慢

twxwjh的博客 5458

php 如果升级_PHP版本升级:从php7.1升级到php7.2

今天升级网站,在使用composer安装依赖时,提示PHP版本过低,需要升级到php7.1.3以上才可以,现在来记录一下升级过程。使用composer up安装依赖时报错$ composer upLoading composer repositories with package informationUpdating dependencies (including require-dev)You...

weixin_32652107的博客 938

传感节点的PHP固件升级实战(从入门到生产级部署)

掌握传感节点的PHP固件升级全流程,解决远程更新难题。涵盖工业监测、智能农业等场景,基于安全传输、断点续传与回滚机制实现稳定升级。从开发调试到生产级部署一步到位,方法实用可靠,值得收藏。

LearnPlex的博客 680

【PHP开发900个实用技巧】327.PHP7升PHP8:一次升级带来的50%性能提升秘籍

本文深入探讨了PHP 7到PHP 8的升级路径,揭示了PHP 8带来的50%性能提升背后的秘密。文章从五个方面展开:PHP 8性能飞跃的秘密、JIT编译器的加速原理、类型系统的优化、新语法糖的性能福利以及零错误迁移的实战技巧。通过详细的技术分析和实战案例,作者展示了PHP 8如何通过底层重构、JIT编译器、强类型声明和新语法特性显著提升性能。同时,提供了从PHP 7平滑迁移到PHP 8的详细指南,帮助开发者避免升级陷阱,确保项目顺利过渡。文章强调,升级不仅是技术迭代,更是提升服务器资源利用效率的关键步骤,建

1197

centos7怎么升级php,centos7 升级php版本

centos7 默认PHP5.4,版本太低,很多要求至少PHP5.51、查看已经安装的PHP组件yum list installed| grep phpphp.x86_64 5.4.-.el7 @basephp-cli.x86_64 5.4.-.el7 ...

weixin_35884307的博客 1808

如何升级php版本

M2的2.3.x版本不支持php7.0了,我们需要升级到7.1或者7.2。 ubuntu里升级php版本也比较简单。 以升级到php7.1为例。 第一步:安装php源以及php7.1 sudo apt-get update -y sudo apt install software-properties-common sudo add-apt-repository -y ppa:ondrej/php sudo add-apt-repository -y ppa:ondrej/nginx sudo ap

1802

WordPress升级PHP版本至7.4.21

记一次公司官网wordpress升级php 用了此教程http://www.bh7lsw.cn/archives/16044 内容如下(#后是附带有结合我的操作和说明): WordPress建站,非常好用, 其自身的升级十分方便。 但WordPress完全基于PHP语言, PHP的升级看起来略感复杂。 以下,介绍一次成功的PHP升级, 希望对遇到类似情况的朋友有帮助。 感谢W9小新的指导。 人总是不见棺材不掉泪, 终于,到了不得不升级PHP的时候, 因为: Composer d

良人眷的博客 1629

如何升级PHP的OpenSSL扩展?

本指南详细介绍了如何升级 PHP 的 OpenSSL 扩展,涵盖了不同的操作系统(Linux、macOS、Windows)和安装方式。首先,通过命令行确认当前的 OpenSSL 版本,然后根据系统类型选择相应的升级命令。对于 PHP OpenSSL 扩展的升级,推荐使用包管理器进行自动升级,同时也提供了手动编译和 Windows 系统的具体步骤。升级完成后,需重启相关服务并验证升级结果。指南还提供了常见故障的排查方法,如版本不匹配、符号冲突和 Windows DLL 错误等。最后,强调了定期升级 OpenS

深山技术宅的博客 1689

lnmp一键安装升级PHP版本

lnmp一键安装包,升级PHP版本 官方的升级方法地址:https://lnmp.org/faq/lnmp1-2-upgrade.html LNMP PHP升级脚本 升级PHP前,请确认你的网站程序是否支持升级到的PHP版本,防止升级到网站程序不兼容的PHP版本,具体可以去你使用的PHP程序的官网查询相关版本支持信息。v1.3及以后版本大部分情况下也可以进行降级操作。 执行:./upgrade.s...

马冠亚的博客 3万+
上一篇: 记一次生产升级事件(nginx)
下一篇: 37.SpringBoot集成EasyExcel读取Excel反射实体值为NULL问题
码哥说
博客等级 码龄8年 5645粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值