一个做站的朋友弄了一套叫飞飞影视导航的cms系统部署有点问题,让我帮忙看一下,这个系统是基于ThinkPHP 2.1开发的,对ThinkPHP也不是太了解,不过这个也太老了,估计注入漏洞一大堆,我去ThinkPHP官网转了一圈,现在都是5.0版本的了,支持php7需要3.2以上才行,粗略的看了一下3.1升级到3.2,架构改动很大,如果要改的话工作量很大,所以可行的方案就是从2.1升级到3.1.3,再对3.1.3进行改动支持php7,5.0就不考虑了。
从ThinkPHP 2升级到3.1.3这个网上已经有不少文章,参考处理就行了,另外这些文章处理之外还有些问题,大致如下
- 1、下面两个函数需要在各个文件替换
eregi -> preg_match eregi_replace -> preg_replace
- 2、common里functions.php下面这个URL处理函数,原来的函数是四个参数的,后来增加了一个domain,但是把第二和第三个参数换位置了,这个问题框架有点坑,哪有这样扩展的
function U($url='',$vars='',$suffix=true,$redirect=false,$domain=false)
- 3、引入ORG/Util的包要放置ThinkPHP/Extend/Library下
- 4、由于String已经变为保留关键字String.class.php的类需要重命名
完成了ThinkPHP 3.1.3支持php7之后,事情还没完,项目同样需要做不少处理
1、入口修改,原来2.x入口实例化一个App对象的代码不需要了
require(THINK_PATH.'/ThinkPHP.php'); // 下面两行直接删除 $App = new App(); $App->run();
2、模板路径修改Tpl放置项目Lib目录下面,并定义一个变量
define('TEMPLATE_PATH', './Lib/Tpl/');
3、多个参数的函数调用,如果参数没有默认值添加上,或者传齐参数,当然前者处理更好
4、URL路径映射大小写问题,就这个cms我发现升级到TP 3.1.3之后很多地方报错,检查发现是url映射类的时候大小写出问题导致的,配置了URL_CASE_INSENSITIVE无法解决,我也没用过这个框架,具体原因不太清楚,我直接修改了框架增加了一个自定义变量来处理,尽量不改动框架逻辑。
5、安全问题,去看了一下漏洞列表,这个感觉就像一扇被机枪扫过的木门,都是洞,对照3.2.4及5.0的版本改了几个稍微严重点的剩下的就放弃治疗了,有些地方需要重构,没时间,本来打算半天搞定的,浪费了一个周末。
我要评论