ThinkPHP3.2.3从php5升级到php7的方法

首先ThinkPHP3.2.3支持php7吗, 绝对支持。

windows下,之前用的项目是部署在Apache2.4.17+php5.x版本, 因为客户那边网络安全扫描,发现很多漏洞,其中有apache、php的高危漏洞,多达上百次, 急需修复,如不修复将面临站点关闭的风险。

于是联系软件供应商,那边之前答应配合升级,最终未能升级, 给到的回复是ThinkPHP3.2.3不能部署在php7。

于是只能靠自己,摸索了三四天, 终于升级成功,现在跟大家分享一下大致过程。

一、升级apache, 下载地址http://httpd.apache.org/download.cgi ,下载的版本是,2.4.33

其中最主要的就是配置文件如下图:

ThinkPHP3.2.3从php5升级到php7的方法

apache加载php支持

PHPIniDir d:/GPS-LOCK/php/php.ini
LoadModule php7_module D:/GPS-LOCK/php/php7apache2_4.dll

在此步骤遇到过不少问题,启用PHPIniDir路径,apache就启动不了,最后发现是php.ini文件引用了 php_ptheads.dll多线程引起的。反复尝试, 问题才得以解决。

二、升级php, 下载地址:https://windows.php.net/download/  此处下载的是7.2.26,

现总结一下升级php7预到的问题

1、此处需要安装php7对应的编译vc++类库版本  , vc_redist.x64.exe, 安装的是vc15

2、sql server数据库支持

ThinkPHP3.2.3从php5升级到php7的方法

此处是因为php7默认没有加载sql server 相关dll

3、需要下载 Microsoft Drivers for PHP for SQL Server https://www.microsoft.com/en-us/download/details.aspx?id=20098 , 我下载的是7.2版本

修改位置文件如下

ThinkPHP3.2.3从php5升级到php7的方法

4、php7中 php.ini文件, ext是省略了php_.dll 如上图配置就行 , 当前需要把解压的文件拷贝到php\ext目录下

三、以为系统已经能正常在php7下运行, 结果项目用到了多线程,需要php支持pthreads,此刻已近奔溃,php.ini文件中加了extension=pthreads后, apache又启动不了。原来ptheads需要在cli模式下运行,ptheads下载地址 https://windows.php.net/downloads/pecl/releases/pthreads/

解压下载包

1、把pthreadVC2.dll文件放在php根目录下

2、php_pthreads.dll拷贝到php\ext目录下,

再次启动apache,发现一直启动不了, 找了好多资料, 原来ptheads需要运行在cli模式下, 我的解决方案是建两个php.ini配置文件, 一个供站点使用php.ini 另一个php-cli.ini文件供ptheads使用, 文件内容一样,此时升级之路总算完成。

由于楼主非php科班出生, 走了不少弯路, 但是漏洞总算得以修复, 如果大家也同样碰到此问题, 可以一起交流, 讨论。

原创文章,作者:ZTHJZ,如若转载,请注明出处:http://www.wangzhanshi.com/n/9686.html

(0)
ZTHJZ的头像ZTHJZ
上一篇 2025年1月1日 16:49:49
下一篇 2025年1月1日 16:49:51

相关推荐

  • PHP7 源码整体框架的示例分析

    一、PHP7语言执行原理 常用的高级语言有很多种,根据运行的方式不同,大体分为两种:编译型语言和解释型语言。 编译是指在应用源程序执行之前,就将程序源代码“翻译”成汇编语言,然后进…

    2025年1月1日
  • php7使用xhprof分析的方法

    前置构建 docker 虚拟测试环境 docker run -it -p 80:80 -v /Users/xxx/Des…

    2025年1月1日
  • ubuntu16.04如何安装php5

    ubuntu16.04安装php5的方法:首先移除默认及已安装的PHP包;然后添加PPA;最后通过“sudo apt-get install php5.6”安装php5.6即可。 …

    php 2025年1月2日
  • mac安装PHP7时出现的问题有哪些

    背景 前几天在mac上跑workrman,由于workerman需要开启多个进程,多进程需要pcntl扩展的支持,我之前那个brew安装的php71没有这个扩展,就直接卸载了php…

    php 2025年1月1日
  • PHP7语言的执行原理是什么?

    PHP作为一种解释型语言,不同于编译型语言编译结果即为当前CPU体系的指令,PHP源代码只有编译成opcode才能够被zend虚拟机直接执行。 下面就简单描述PHP7语言执行原理:…

    2025年1月1日
  • ubuntu安装php7的操作步骤

    ubuntu安装php7的方法:首先执行【add-apt-repository ppa:ondrej/php】命令更换php源;然后执行【apt-get -y install ph…

    php 2025年1月1日
  • 解决织梦在PHP7上安装模块时模块包含文件为空的问题

    织梦在PHP7上安装模块时模块包含的文件为空怎么办? 织梦在PHP7上安装模块时模块包含的文件为空的解决方法 推荐学习:织梦cms 织梦运行在PHP7以上版本时,安装插件时,显示模…

    2025年1月1日
  • PHP 7.x 各个版本的新特性有哪些

    php有什么用 php是一个嵌套的缩写名称,指的是英文超级文本预处理语言(php:Hypertext Preprocessor)的缩写,它的语法混合了C、Java、Perl以及ph…

    php 2025年1月1日
  • PHP7中哪10件事不要做

    1. 不要使用 mysql_ 函数  这一天终于来了,从此你不仅仅“不应该”使用mysql_函数。PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好得多的m…

    2025年1月1日
  • Centos下PHP5怎么升级到PHP7

    首先下载PHP7安装包,使用wget http://am1.php.net/distributions/php-7.2.0.tar.bz2,或者直接访问下载,然后ftp到linux…

    php 2025年1月1日

发表回复

登录后才能评论