前言
2019年1月1日起,PHP 5.6 已经不再有官方安全支持。
2018年12月1日起,PHP 7.0 已经不再有官方安全支持。
2019年12月1日,再过不到1年,PHP 7.1 也会结束支持,所以建议大家有条件的还是尽快切换PHP 7.2 为妙。当然,在迁移之前也务必要做好代码数据备份以及准备工作,也要做好可能重构的心里准备。
近期把一台旧服务器的换了PHP7,结果遇到了 丢失 VCRUNTIME140.dll
错误,把这个错误解决方案附上之后,也顺便提一些基本的注意事项。
决策:我需不需要PHP7 ?
- 如果你的网站非常重要,安全漏洞会引发致命问题
- 如果你希望自己的网站性能更强
- 如果你的网站PHP代码有比较好的结构或框架
请继续阅读后半部分,并且开始学习PHP7的新特性进行网站的迁移与维护。
- 如果你的网站使用着非常旧版本的小众数据库以及驱动
- 如果服务器用的是非常旧版本的 Windows Server 2010 甚至更老的版本
- 如果网站用的Apache或Nginx或IIS都是非常老旧的版本,并且集成了其他一些重要的内容。
建议一锅端根据功能全部一起重构弄一次大升级,或者保持原有PHP5并且加强安全方面的排查,定时关注官方以及论坛的安全漏洞反馈。
迁移:我需要事先知道什么?
版本升级意味着可能出现不兼容的情况,所以必须要事先了解下面的内容:
- 语法差异
- 弃用的用法,以及语言新特性
- 不再支持的驱动与拓展
- 新版本所需要新驱动与拓展
- 与其他内容的兼容性
了解新内容
PHP官方给了最新的迁移说明,请查阅 http://php.net/manual/zh/appendices.php 的内容,了解5.6 - 7.0 - 7.1 - 7.2 -7.3 的新内容,建议最好迁移到 7.2 以上。
查询数据库支持与框架支持
如果要升级,务必要确认目前业务里的其他内容不受影响,特别是数据库和框架。
数据库方面有一些变动,请参阅官方说明 http://php.net/manual/zh/migration70.incompatible.php, 调整原有程序中连接数据库的部分代码。(当然,改动之前务必备份)
框架方面,TP3
兼容, TP5.0
兼容, TP 5.1
之后支持, Laravel 5.3
之后支持,具体会不会出bug请参考论坛以及其他问答社区。
系统支持
主要检查自己当前的 LInux系统版本或者Windows Server 里面的相关拓展有没有安装。比如有一个比较常见的升级错误,丢失 VCRUNTIME140.dll
。
丢失 VCRUNTIME140.dll 错误
这个错误有点隐蔽,不会在php中报错,而是直接显示500错误,当在命令行中执行php指令时,则会弹窗提示
无法启动此程序,因为计算机中丢失 VCRUNTIME140.dll。尝试重新安装改程序以解决此问题。
原因是Visual C++Redistributable 2015没有安装,之前可能用PHP5只是装了2010或2008的版本,导致的错误。解决方法也很简单,重新下载安装即可。
切换语言,重新部署
前面基本的准备工作做好之后,换语言到其实是很简单的事情了。无非就是下面几个事情
- 下载php7的语言包,解压到服务器的开发目录下
- 调整php7的
php.ini
配置文件(error_log, debug_mode, ext_dir都进行对应调整) - 切换php的系统路径与应用程序路径
- 保证所需的php拓展正常安装与运行
系统路径:
如果是linux直接改对应的系统配置文件即可,win则是在 此电脑-高级设置-添加环境变量
里面调整。
应用路径
Apache或者Nginx的直接改配置路径即可,对应路径参数改成最新下载下来的PHP7路径即可。
IIS则在对应的网站里,打开 IIS管理器 - 处理程序映射
,找到原本的 FastCgiModule
模块,点击右方的编辑,把里面的可执行文件(可选)(E):
的文件路径,改成最新下载下来的PHP7路径即可。
最后放上调整过的新代码,撤下旧版本代码时务必备份,完事大吉。
共同学习,写下你的评论
评论加载中...
作者其他优质文章