用宝塔面板装 KingCMS X1,大部分步骤和普通站点一样;但面板有几处默认设置会直接把 X1 弄坏,表现还很有迷惑性:首页能开、后台能进,前台样式却是白板。下面按「装完最容易踩」的顺序列出来。

KingCMS X1 前台首页示例
装好后的前台首页示例;如果样式全丢,多半是下面第 3 条。

1. 运行目录与防跨站

网站目录填站点根,运行目录选 /public,不要选站点根或 x1/。同时宝塔默认开启「防跨站攻击」,会在站点根写 .user.ini,把 PHP 能访问的路径限制在 public/ 里;而 X1 的数据库、app.key、上传文件都在站点根下的 data/,被限制后会报目录不可写、SQLite 打不开、图片 404。

两种处理:关掉防跨站;或把 open_basedir 放宽到站点根。改完重启 PHP-FPM。然后确认 data/ 和 public/img/ 归 Web 用户(宝塔通常是 www)所有。

2. PHP 8.4 和扩展

X1 最低要求 PHP 8.4,不支持更低版本。在面板「软件商店」装 8.4,并确认这些扩展存在:pdo_sqlite、sqlite3、sodium、mbstring、intl、gd、curl、zip。缺 sodium 会存不了加密设置,缺 gd 缩略图会失败。装完扩展记得重启 PHP-FPM。

3. 两条后缀缓存正则(最常见)

宝塔新建站点时会在 vhost 末尾加两条正则,把 .css、.js 和图片后缀直接当静态文件处理。问题是 X1 有两类资源是 PHP 动态输出的、磁盘上并不存在:主题资源 /n/<主题>/theme.css 和 /favicon.ico。结果就是 nginx 找不到文件返回 404,前台样式全丢。

处理办法不是删掉这两条,而是把它们收窄到真实的静态目录 /assets/,例如把 location ~ .*\.(js|css)?$ 改成 location ~ ^/assets/.*\.(js|css)$,图片那条同样加 ^/assets/ 前缀。改完 nginx -t 再重载。

KingCMS X1 后台页面示例
后台能进不代表前台正常;样式问题优先查第 3 条正则。

4. /media/ 与上传限制

上传文件存在 data/uploads/,不在 public/ 里,所以要在 nginx 配一条 /media/ 别名指向它,并禁止该目录执行 PHP。另外 public/img/ 需要可写,缩略图缓存会写这里。上传限制两处要对齐:PHP 的 upload_max_filesize、post_max_size 和 nginx 的 client_max_body_size,建议都设 20M,否则后台传大图会失败。

5. 伪静态与装完自检

伪静态优先用面板「网站 → 设置 → 伪静态」里选 KingCMS 规则,不要手写整段 vhost;然后到后台「设置 → 基本信息 → 网址形式」选伪静态,保存时会自动检测重写是否生效。最后跑一次自检:

cd /www/wwwroot/example.com
/www/server/php/84/bin/php bin/kingcms check:web

它会逐项检查首页、主题 CSS、/healthz、/media/、网址形式、目录可写性和 PHP 扩展,失败项会直接给出对应的配置位置。

小结

宝塔装 X1 的关键就三件事:运行目录指 public、给 PHP 放开 data/、把两条后缀正则收窄到 /assets/。其余按面板常规操作即可;装完用 check:web 过一遍,比上线后再排查省事得多。