今天准备测试一个PHPCMS的功能模块,准备全新安装个PHPCMS用于调试修改,上传了自己修改过的PHPCMS的安装程序(PHPCMS v9.6.3 UE4修正版 安装包),然后准备打开页面开始install的时候突然发现出错PHP错误提示
Cannot redeclare go() in xxx/phpcms/libs/functions/global.func.php on line 1476
突然之间有点懵圈,这个安装包是我自己修改过,我自己的好几个站都用的这个安装包。也在网上分享给很多朋友使用,从来没出现过这个错误啊,而且这个错误还是出现在安装前,不论打开index.php还是install/install.php都是提示这个错误,我满头雾水。
尝试使用官方原版的PHPCMS安装包,也还是同样情况…
我详细查看了一下global.fun.php中的go()方法,并且全站查找了一下所有function go()的地方,没有发现任何问题,但是错误就那样摆在你面前,让你页面打不开,安装执行不了,顿时一万头神兽在我心里奔腾而过
难道是环境问题?突然想起昨天我安装了一个PHP的扩展–swoole,难道是这货?
百度了一番,果然!
最新版的swoole中声明使用了一个同名函数,大悟~
总不能就此卸载swoole吧,我整准备好好摸索摸索swoole呢
于是提供解决方案: 重命名PHPCMS的go方法名称为pc_go,以此解决和swoole方法名冲突的问题
修改如下
1.修改文件
phpcms/libs/functions/global.func.php
找到
function go($catid,$id, $allurl = 0)
修改成
function pc_go($catid,$id, $allurl = 0)
2.修改文件
phpcms/modules/admin/position.php
找到
$r['url'] = go($_v['catid'], $_v['id']);
修改成
$r['url'] = pc_go($_v['catid'], $_v['id']);
3.修改文件
phpcms/modules/classes/comment_api.class.php
找到
return array('title'=>$r['title'], 'url'=>go($catid, $contentid, 1), 'allow_comment'=>(isset($data_info['allow_comment']) ? $data_info['allow_comment'] : 1));
修改成
return array('title'=>$r['title'], 'url'=>pc_go($catid, $contentid, 1), 'allow_comment'=>(isset($data_info['allow_comment']) ? $data_info['allow_comment'] : 1));
4.修改文件
phpcms/modules/classes/content_tag.class.php
找到
$array[$key]['url'] = go($info['catid'],$info['id']);
修改成
$array[$key]['url'] = pc_go($info['catid'],$info['id']);
5.修改文件
phpcms/modules/member/content.php
找到
$_v['url'] = $_v['status']==99 ? go($_v['catid'],$_v['id']) : APP_PATH.'index.php?m=content&c=index&a=show&catid='.$_v['catid'].'&id='.$_v['id'];
修改成
$_v['url'] = $_v['status']==99 ? pc_go($_v['catid'],$_v['id']) : APP_PATH.'index.php?m=content&c=index&a=show&catid='.$_v['catid'].'&id='.$_v['id'];
6.修改文件
phpcms/modules/special/classes/special_tag.class.php
找到
$r['url'] = go($content_arr['1'], $content_arr['0']);
修改成
$r['url'] = pc_go($content_arr['1'], $content_arr['0']);
7.修改文件
phpcms/modules/special/templates/content_list.tpl.php
找到
$r['url'] = go($content_arr['1'], $content_arr['0']);
修改成
$r['url'] = pc_go($content_arr['1'], $content_arr['0']);
按以上步骤修改就避免了phpcms函数和swoole函数同名冲突的问题
如此,就解决了PHPCMS安装时遇到Cannot redeclare go() 错误提示的问题
本文由 www.UE4.net 原创提供 黄韬 QQ:95606117,转载请注明