phpcms发布与生成内容页面空白的解决办法
2014/10/14 技术文章评论:暂无评论浏览:
想换个CMS来用,所以新装了几个CMS系统,最后选定了PHPCMS。倒不是因为它非常优秀,而是因帝国的那种标签不太喜欢。顺便提一下,帝国CMS的栏目自定义字段,我觉得很好,如果用来做一个分类性的栏目,分类自身的属性可以自定义字段来实现,像一些游戏网站分区就很方便了。还是转回正题,使用PHPCMS创建好栏目,正要添加内容的时候,这时问题来了,弹出的添加内容页一片空白什么也没有。网上查了一下资料,有说是mod security的问题,也有说是缓存读不到的问题。按网上说的几种方法都不太见效,搞了好久也没弄好。
网上的教程有提到用本地安装好的PHPCMS缓存文件来覆盖到FTP空间上的文件,文件为caches\caches_model\caches_data\content_form.class.php ,这个方法经过测试是有效的,但很不幸的是只要你刷新缓存,那么问题又出现了,发布文章还是空白一片,治标不治本!总不能每次刷新都上传一次,得多辛苦呀。网上也查到另一个方法,删去video模型,这种阉割了系统功能的方法,我觉得这不会是最优的解决的办法。
即然是缓存,总会是什么地方生成出来的,而且是生成后才出现了问题,那么错误的源头一定是生成的地方。再打开一次添加内容页面,然后下载error_log查看最后一行是的错误如下(某些地方我用*代替)。
“[14-Oct-2014 15:47:49 Etc/GMT-8] PHP Parse error: syntax error, unexpected ”<SCRIPT LANGUAGE=”JavaScript”‘ (T_ENCAPSED_AND_WHITESPACE) in /home/**/public_html/***.com/caches/caches_model/caches_data/content_form.class.php on line 521”
下载“content_form.class.php”查看521附近的代码,是一个函数:function video($field, $value, $fieldinfo) ,结合网上别人所说的,问题都指向video模型。刚开始使用phpcms,说真的还不知道它的目录在哪,当然百度一下,得到:phpcms\modules\content\fields\video。它的下面共有7个文件,查看了一下form.inc.php的开头正是function video($field, $value, $fieldinfo),从FTP上下载与本地的对比来看,少了一大载,应该是上传不全。FTP上传覆盖后它依然一样少了后部分,搞不懂为什么,只好用在线编辑粘进去。刷新一下问题就解决了。
刷新一下,接下来生成内容页的时候,又蛋疼了,没法生成。又用上面的方法追查了一遍,报错的是缓存中的content_output.class.php,同样方法用在线编辑粘了output.inc.php保存,生成成功!刷新缓存也不会现出现问题了。
总结一下,问题不是出现在phpcms上,而是我用的是国外的服务器,传输过程中造成了缺失。