PHPCMS模板这玩意儿,老站长又爱又恨,爱的是它标签清晰、套模板快,老站维护成本低;恨的是一堆坑,官方早不更新,模板市场里鱼龙混杂,稍不留神就是白屏、挂马、分页404,PHPCMS模板的坑,我基本都见过,下面这些经验能让你少熬几个通宵,少花几笔冤枉钱。
先说最常见的:改了模板不生效,很多人复制了一份 default 模板,改成 mytheme,后台也切换了,结果改 list.html 前台没反应,先别怀疑人生,九成是这三个原因:第一,你改的不是当前站点用的模板目录;第二,模板缓存没清,PHPCMS会把编译后的模板扔到 caches/caches_template/主题名/,后台“更新缓存”有时清不干净,直接手动删这个目录,权限给 www 用户可写,别上来就777,第三,CDN或浏览器缓存,尤其是套了CDN的站,清了服务器缓存,CDN还咬着旧页面,后台更新缓存、删编译缓存、刷新CDN、强刷浏览器,一套下来基本能好。

PHPCMS模板避坑实录,改了半天不生效、被挂马、分页404,这些弯路你别再走
第二个坑:模板里被塞后门,前年接了一个本地门户,客户图便宜,从某站下了套“精仿”PHPCMS模板,20块钱,装完确实漂亮,三天后首页被跳转到菠菜站,查日志、查文件,最后在 header.html 里发现一段加密代码:eval(gzinflate(base64_decode(...))),删掉后,列表页又白屏,因为模板里还有PC标签调用了不存在的模型,解决方案很简单也很残酷:不要用来路不明的破解模板,非要用,先全局搜索 eval、assert、base64_decode、gzinflate、file_put_contents、$_POST,有就删,然后拿官方默认模板对照,重做标签,安全上别省,装个云WAF或宝塔防火墙,Nginx里禁止模板目录执行PHP:
location ~* ^/(templates|caches|data|uploadfile)/.*\.(php|php5|phtml)$ {
deny all;
}
第三个坑:PC标签和伪静态,PHPCMS模板里写 {pc:content action="lists" catid="1" num="10" order="listorder DESC"},看着简单,但少个闭合 {/pc} 就白屏,引号写成中文引号,也白屏,更气人的是分页:列表页第一页正常,第二页404,多半是后台URL规则和模板里的 {$pages} 没对上,或者Nginx伪静态没配,解决:先在后台把伪静态关掉测试,正常了再配规则;模板里分页统一用 {$pages},别自己拼,改模板前先备份,改完用二分法排查,把可疑段先注释掉。
移动端也是老坑,PHPCMS V9自带 mobile 模板,但识别和域名绑定经常出问题,要么用 m. 子域名绑定手机模板,要么直接做响应式,把PC模板的CSS改一遍,别指望一套模板自动适配所有手机,尤其是老模板,表格布局一堆,移动端错位是常态。
推荐配置这块,老站求稳:PHP 5.6 + MySQL 5.6/5.7 + Nginx,别硬上PHP 8,PHP 5.6虽然停止支持,但PHPCMS V9兼容最好,服务器2核4G起步,装OPcache,有条件的上Memcached或Redis,面板用宝塔省时间,配好防火墙、文件防篡改、计划任务备份,插件只推荐几种:百度主动推送、Sitemap、七牛/又拍云CDN、PHPCMS安全补丁包,那些“万能采集”“可视化模板编辑”“破解版SEO插件”,能不装就不装,后门和冲突比功能多。
长期维护建议很实在:第一,模板和数据库每天备份,附件每周备份,异地存一份,别只放同服务器,第二,模板用Git或压缩包版本化,改前先提交,改崩了能回滚,第三,后台路径改名,管理员强密码,关注册或开审核,能上IP白名单就上,第四,每月搜一次马,重点查 eval、assert、base64_decode、gzinflate、$_POST,宝塔木马查杀扫一遍,第五,删掉 install 目录,关闭后台文件管理,危险函数能禁就禁,第六,如果新项目,别再用PHPCMS了;老站能稳定跑就别乱升级,真要动,先迁移到测试站。
PHPCMS模板不是不能用,是要按老系统的脾气来,省预算的核心是别买带后门的便宜模板,省时间的核心是清缓存、查权限、看伪静态,把这几步做熟,PHPCMS模板也能稳稳当当跑很多年。
发表评论