分类 代码分析 下的文章

phpMyAdmin调整界面语言无效的问题

前面重装了系统,然后用XAMPP搭建的本机环境。
今天使用自带的phpMyAdmin的时候,发现界面还是英语的,对于咱们中国人来说肯定要换成中文的哈~

于是改配置文件,找到phpMyAdmin目录下的libraries\config.default.php文件,搜索代码

$cfg['DefaultLang'] = 'en';

把en改为zh_CN,保存。

前台刷新页面发现还是英文的,没有变化,搜索了下没找到相关的问题,看了下别人的配置确实是这么改的。
郁闷了,又是一个焦虑的问题。

后来看了下代码发现是phpMyAdmin的cookie导致的,phpMyAdmin会把语言项放到cookie里,虽然不知道为啥要这么搞?

$GLOBALS['PMA_Config']->setCookie('pma_lang', $GLOBALS['lang']);

如图。
phpMyAdmin中文设置

退出重新登录,或者删掉这个cookie然后刷新页面就换成中文的了。

在XAMPP环境下安装PHPUnit+Selenium

Selenium服务器端安装很方便,本文不再做介绍了。

XAMPP集成环境默认已经带了PEAR和PHPUnit了,但是版本较低,准备更新到最新版。

1) 更新PEAR通道:pear update-channels
2) 更新PEAR自身和其现有的包:pear upgrade -all

在cmd下,执行上面两个命令,发现老是报错,看了下错误信息,应该是安装到C盘,没有权限建立文件夹导致。
但是我的XAMPP应该是在E盘的啊,怎么安装到C盘去了,焦虑。找了一圈,也没发现PEAR的配置文件在哪。

执行下面的命令

pear config-show

发现好几项都是配置到C盘去了,杯具,这是什么情况。
后来搜索知道默认的配置是有问题的,需要从官方重新下载go-pear.phar,然后在cmd下执行命令

php go-pear.phar

然后一路Enter,最后会提示成功。

依次执行下面的命令

pear update-channels
pear upgrade-all

最后提示成功,然后执行下面的命令,查看PEAR的版本信息。

pear -V

执行结果如图:
pear查看版本号

接下来安装PHPUnit,执行下面命令。

pear channel-discover pear.phpunit.de
pear channel-discover pear.symfony-project.com
pear install --alldeps phpunit/PHPUnit

最后会提示成功,请到pear的安装目录\PHPUnit\Extensions下检查是否有Selenium的文件,如:文件夹SeleniumTestCase和文件SeleniumTestCase.php,如没有执行下面的命令。

pear install phpunit/PHPUnit_Selenium

执行上述命令前,需要PHP开启curl扩展,否则会有如下的报错:
安装PHPUnit_Selenium

在执行PHP的测试用例的时候,有如下一个报错:

Call to undefined method PHP_CodeCoverage_Filter::getInstance()

后来看了下应该是系统环境变量里的path里的pear目录不对导致的,因为我把XAMPP自带的pear文件夹删掉后重装的,里面记录的路径还是之前的路径。
改了之后重新执行就ok了。
测试用例执行结果
如果系统环境变量没问题,不妨参考下这篇文章。
http://xiezhenye.com/2011/12/%e5%9d%91%e7%88%b9%e7%9a%84-phpunit.html

好吧,下面就要开始捣鼓自动化测试了~

版主已阅插件升级到了Discuz! X2.5

闲来无事,顺便把2年前写的插件升级到Discuz! X2.5吧。

升级主要就是一些代码按Discuz! X2.5的规则重写,最麻烦的就是数据库这块。
因为论坛本身表的一些查询满足不了,所以需要新加几个方法,一开始一直纠结在要用原来表类里的底层方法,没找到好的实现方法,基本上是把原来表类里的底层方法在插件表文件里重写了一遍。后来问了下同事,看了下他们搜索的代码实现机制,发现是直接用的DB::**实现的,呃,最基本的方法被我忘了。

好吧,用DB::**重写。
剩下的可能就是一些代码整理优化和测试了,暂时不会增加设置项,和之前的版本保持一致。

过程中遇到一个问题:
如果你要新加论坛原有表的数据库方法,你插件里的数据库表文件不要跟论坛本身的表文件重名,因为Discuz!现在还不支持命名空间,否则可能会出现报错。

PS:插件已上线应用中心,地址是http://addon.discuz.com/?@dst_read.plugin

0419更新:版主已阅插件排进前10,哈哈~~~

让Discuz! X2.5版QQ互联的QQ注册跳转到完善资料页的方法

Discuz! X2.5的QQ互联增加了QQ互联游客组,使没有注册的QQ通过QQ登录后变为QQ互联游客组,可以获得一些浏览帖子内容和部分附件的权限。
当用户需要进行登录后的某项操作时,才提示他进行完善资料或者绑定已有帐号。

鉴于论坛有很多人反馈想改回原来Discuz! X2.0的注册方法,直接完善资料进行注册。
特给出一个小的修改方案予以实现,QQ登录完后跳转到完善资料页。
找到source\plugin\qqconnect\connect\connect_login.php文件,搜索代码

$utilService->redirect($referer);

改为

dheader('Location:member.php?mod=connect&referer=index.php');

云平台常见报错的解决方法

之前负责云平台版块,一直想要将云平台的常见问题总结下来方便大家排查解决问题。
由于各种原因,一直没时间全面的总结,大家遇到问题建议还是到官方论坛搜索一下,很多问题之前其实都已经解决了,并给出了相应的解决方法。

最近又发现有站长反应搬家后云平台出现问题,云平台报错如下:

出了点小错,由于站点ID/通信KEY等关键信息丢失导致Discuz!云平台服务出现异常,使用诊断工具检测站点ID和KEY,如有疑问请访问官方论坛寻求帮助

搬家同时更换了域名的情况:
1.有搬家前的数据库备份的情况,在备份数据中执行下面的sql。

SELECT `svalue` FROM `pre_common_setting` WHERE `skey` in ('my_siteid', 'my_sitekey')

查询出来的为当前的站点ID、KEY,请做好这两个值的备份。
然后进入新域名站点后台->云平台->诊断工具下,点击手动修改站点ID/KEY,如图。
[caption id="attachment_740" align="alignnone" width="300" caption="云平台诊断工具"]云平台诊断工具[/caption]

在弹层里填入前面查询的站点ID和站点KEY,同时将云平台的状态改为已开通,提交保存。
[caption id="attachment_741" align="alignnone" width="300" caption="云平台诊断工具"]云平台诊断工具[/caption]

然后进入新域名站点后台->云平台->站点信息下,点击同步站点信息。同步成功后,您的站点ID对应的域名就变成了您的新域名。

2.没有搬家前的数据库备份的情况,请将原来开通云平台的域名重新指向新域名的站点。然后通过老域名访问站点后台->云平台->诊断工具,点击手动修改站点ID/KEY,如图。
[caption id="attachment_742" align="alignnone" width="218" caption="云平台诊断工具"]云平台诊断工具[/caption]

在弹层里将站点ID/KEY删掉,同时将云平台的状态改为尚未开通云平台,提交保存。如果您的诊断工具里的状态没有站点ID/KEY,同时云平台状态已经是尚未开通就不用进行前面的操作。

然后使用老域名进入站点后台->云平台->云平台首页进行开通云平台,这时候会提示重复注册。按提示下载修复文件,然后上传到网站根目录下,使用老域名访问修复文件,按照提示找回站点ID/KEY即可。找回后,使用新域名访问站点后台->云平台->站点信息,点击同步站点信息。同步成功后,您的站点ID对应的域名就变成了您的新域名。

只是进行搬家,并没更换域名的情况:
您可以按上面的第2种方法进行自行找回ID/KEY。

其他情况请到官方发帖求助,请求官方协助解决。