游客发表
phpcms这名字,开源现在提起来多少有点考古的系统味道。但在2008到2014那几年,开源国内做地方门户、系统行业资讯站的开源,十个里有六七个后台戳着它的系统logo。一个典型场景:某三线城市的开源房产信息网,编辑每天要传三四十套房源图,系统phpcms后台的开源“批量上传”按钮被点得包浆——这玩意当年能直接拖拽压缩包上传,解压自动生成缩略图,系统就冲这点,开源很多站长忍了它其他毛病。系统
它其实有两套基因。开源一套是系统phpcms 2008,老架构,开源代码里还能看到不少过程式编程的影子;另一套是phpcms v9,2010年之后主推的版本,MVC分层清晰多了,模块化也像那么回事。但v9有个让人又爱又恨的设计:栏目和模型深度绑定。你想加个“楼盘户型”字段?得先建个模型,再挂到栏目上,改完还得更新缓存。新手第一次操作,十有八九会卡在“为什么前台不显示”这步。老手则默默打开数据库,直接改表结构——反正官方文档写得跟天书似的。
安全是个绕不过去的坎。2014年曝出的前台任意文件上传漏洞,让一批没打补丁的站直接变成菠菜页面。我印象很深,当时有个做本地美食推荐的站长,早上打开后台发现多出两百多个“澳门线上赌场”的栏目,整个人愣在屏幕前。后来查日志,攻击者就传了个伪装成图片的php文件,路径猜都不用猜——/uploadfile/下面按日期分文件夹,规律得跟课程表一样。这事之后,很多人才开始认真对待官方补丁,但phpcms的更新频率已经慢下来了。
模板引擎倒是挺接地气。它没搞什么复杂的语法糖,直接允许在html里写{ if}、{ loop},甚至能塞php原生代码。好处是上手快,会点html就能改模板;坏处也明显——逻辑和视图搅在一起,一个list.html文件里能出现十几层嵌套循环。我见过最夸张的一个站,首页模板八千多行,改个banner位置得用搜索定位。但话说回来,当年那些外包公司就靠这个吃饭,三天套一个站,收五千块,客户还觉得挺值。
数据库设计有个细节:v9把文章内容拆成news和news_data两张表。主表存标题、发布时间这些高频查询字段,副表存正文大文本。这招在MySQL 5.5时代挺管用,列表页翻页快不少。但后来有人做全文检索,发现得join两张表,性能又掉下去了。这种取舍很phpcms——它总是优先考虑最普通的列表展示场景,复杂需求自己想办法。
2016年之后,官方基本停更了。但有意思的是,直到2020年,某些县级政府网站还在用。问就是“稳定,没出过事”。实际上呢,php版本还停在5.3,服务器是Windows Server 2003,维护的人早转行了。有次帮人迁移数据,发现后台密码居然是admin888——从安装那天起就没改过。这种“能用就行”的心态,倒是很符合那个野蛮生长的建站年代。
现在回头看,phpcms像是一把用顺手的旧螺丝刀。拧不动新式内六角,但对付老式十字螺丝依然利索。它的很多设计思路——比如内容模型和栏目的强关联、模板里直接写逻辑——在今天看来都不够优雅,可当年就是靠这些“不优雅”让不懂代码的人也能搭出个像样的站。你要是现在想拿它做新项目,我劝你算了;但要是手头有个老站要维护,别急着换,先把/api/目录下的文件权限改成644,再删掉install文件夹,能省不少心。
友情链接