首页 » SEO优化 » requirecodeimgphp技巧_进级PHP7过程记录

requirecodeimgphp技巧_进级PHP7过程记录

访客 2024-11-25 0

扫一扫用手机浏览

文章目录 [+]

项目一贯处于PHP5.6的运行环境中,决定将PHP升级到PHP7,考虑的缘故原由紧张包括:

1、PHP7的正式版也已经发布了很永劫光,就稳定性和资料的丰富程度来说都足够了

requirecodeimgphp技巧_进级PHP7过程记录

2、看到PHP5.的不会进行安全掩护的关照

requirecodeimgphp技巧_进级PHP7过程记录
(图片来自网络侵删)

3、PHP7相对PHP5的性能干系有提升

4、生命不息,折腾不止

特此将升级过程及步骤进行记录,希望可以帮到有类似需求的小伙伴!

二、安装PHP7

这个步骤就不多说了,从网上查找下安装过程,按照教程进行即可。
(ps:公司的做事器上已经有其他同事安装过了,我直策应用就好了)

php7和php5.6详细信息:# php7 -vPHP 7.1.12 (cli) (built: Jun 8 2018 19:36:50) ( NTS )Copyright (c) 1997-2017 The PHP GroupZend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies# php -vPHP 5.6.10 (cli) (built: Jun 8 2018 14:46:07) Copyright (c) 1997-2015 The PHP GroupZend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

三、项目利用PHP7环境

测试环境上运行的项目有很多,以是不能直接将默认的php更换成PHP7,采取的办法是利用nginx配置进行处理,设置这个项目利用phpfpm7。

调用项目中的测试接口,测试接口内容:echo phpinfo(); 可以不雅观察到已经更换为PHP7了!

四、静态代码检测

众所周知,PHP7废除了很多函数,以是我们须要对代码进行检测项目的兼容性。

采取的方法是利用 PHPCS和PHPCompatibility 对项目进行PHP7的编码规范检测。

//PHPCS和PHPCompatibility安装和利用流程mkdir /tmp/php_codesniffer curl -s http://getcomposer.org/installer | php ./composer.phar config -g repo.packagist composer https://packagist.phpcomposer.com ./composer.phar selfupdate ./composer.phar require \公众squizlabs/php_codesniffer=\公众 cd /tmp/PHPCompatibility git clone https://github.com/wimg/PHPCompatibility.git /tmp/PHPCompatibility/vendor/bin/phpcs --config-set installed_paths /tmp/PHPCompatibility/PHPCompatibility/ /tmp/PHPCompatibility/vendor/bin/phpcs -i /tmp/PHPCompatibility/vendor/bin/phpcs --standard=PHPCompatibility --report-file=/tmp/check_php7_report [项目路径]

之后就可以根据天生的报表'/tmp/check_php7_report',逐条对项目代码进行处理了。

五、缺点日志哪去了?

项目利用的是ThinkPHP3.2.2框架,但是到目前为止,仍未找到缺点日志输出到哪里了,之后有韶光再连续进行吧,大概流程如下:

1、首先在nginx中增加如下配置:

error_log logs/error.log error;

然后经由几天的利用,从未看到有过日志记录,认为没有涌现问题。

2、突发奇想,想验证下缺点情形是可以被记录的,于是写了个接口,详细内容:

$str = 'asdasdaiAAS'; echo preg_replace(\公众/([A-Z])/e\"大众, \公众'_' . strtolower('\\1')\公众, $str); 在Linux下实行PHP脚本输出以下内容,同理接口也该当返回赞许内容:php5.6 : asdasdai_a_a_sphp7 :PHP Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in ..

3、但是实际情形,在PHP5.6接口返回与预期符合,但是在PHP7直接返回空并且httpcode为200(问题涌现)

4、初步预测是由于ThinkPHP框架导致未记录缺点情形,以是查看其配置及框架的日志,均未创造非常。

5、未完待续,等有韶光再查下缺点日志去哪了

六、接口检测

本来是想通过缺点日志来确认接口是否存在问题的,但是由于找不到缺点日志,以是无奈下换其余的方案:

1、通过nginx的日志获取调用过的接口,然后跟项目所有接口去重,找到未调用的接口

2、调用过的接口利用脚本分别在PHP5.6和PHP7的环境下重新调用获取返回值,把两次的返回值md5加密后进行比拟

有了方案后处理起来并不难,按照预期该当是同等的,但是确实存在问题了!
(从侧面也解释这个接口检测是很有必要的,不能仅靠测试职员在功能上验证)

七、创造的坑及填坑方法

1、问题:php7的json_encode处理float类型会涌现溢出的征象

php5.6:[6.28] php7:[6.2800000000000002]

办理方案:修正php.ini中serialize_precision 到17以下,自测php7规复正常

2、问题:在命令行办理了json_encode溢出问题,然后接口还是会存在问题

办理方案:重启PHP7的phpfpm

3、问题:php7的打算中,如果除数为0会导致结果为NAN

php5.6:0 php7:NAN

办理方案:判断下除数为0的情形

八、结语

这次升级PHP7的事情还没有结束!
目前只是完成自测部分,等待测试通过后,完美上线才能算收工大吉!

如果后续还有创造坑,会及时更新在这边的。

希望可以前路开阔,一起无坑喽~

作者:caohaoyu

链接:https://www.jianshu.com/p/bb0784f6ec7c

来源:简书

简书著作权归作者所有,任何形式的转载都请联系作者得到授权并注明出处。

相关文章

我国土地利用分类代码的构建与应用

土地利用分类代码是我国土地管理的重要组成部分,是土地资源调查、规划、利用和保护的依据。土地利用分类代码的构建与应用显得尤为重要。本...

SEO优化 2025-02-18 阅读0 评论0

微信跳转微信支付便捷支付体验的秘密武器

移动支付已成为人们日常生活中不可或缺的一部分。作为我国领先的社交平台,微信支付凭借其便捷、安全的支付方式,深受广大用户的喜爱。而微...

SEO优化 2025-02-18 阅读0 评论0

探寻会计科目代码背后的奥秘分类与

会计科目代码是会计信息系统中不可或缺的组成部分,它将企业的经济活动进行分类和归纳,为会计核算、财务分析和决策提供重要依据。本文将从...

SEO优化 2025-02-18 阅读1 评论0