MacCMS 部署排障大全
自建 MacCMS 最容易卡住的就是环境和配置。下面把常见故障按"症状 → 原因 → 解决"列清楚,照着排基本都能解决。MacCMS V10 基于 ThinkPHP5,很多问题其实是框架和环境的通病。
除首页外全部 404
症状:首页能打开,点进任何栏目、详情、后台都报 404。
原因:伪静态没配。ThinkPHP5 的路由要靠 Web 服务器把请求转发给入口文件,没配规则时只有首页能命中。
解决:按你的服务器加伪静态规则。
Nginx:
if (!-e $request_filename) {
rewrite ^/index.php(.*)$ /index.php?s=$1 last;
rewrite ^/admin.php(.*)$ /admin.php?s=$1 last;
rewrite ^/api.php(.*)$ /api.php?s=$1 last;
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}Apache(网站根目录放 .htaccess,并确认开了 mod_rewrite):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
</IfModule>改过入口名的注意
如果你把 admin.php、api.php 改成了别的名字,上面规则里对应的那行也要一起改。
PHP 8.x 各种类型报错
症状:装好或升级 PHP 后,前台 / 后台白屏或报错,常见一条是:
Argument #2 ($array) must be of type ?array, string given原因:MacCMS V10 用的 ThinkPHP5 比较老,和 PHP 8.x 的严格类型声明冲突。能勉强跑,但各种边角会出错。
解决:把 PHP 版本切回 7.x(宝塔面板里网站设置能直接切)。PHP 7.x 是跑 MacCMS V10 最稳的选择,装站时就建议直接选它,少踩这类坑。
数据库连接失败
症状:访问报数据库连接错误,或安装时填完库信息过不去。
原因:数据库配置填错,或库 / 账号还没建。
解决:检查 /application/database.php:
return [
'hostname' => '127.0.0.1',
'database' => '数据库名',
'username' => '用户名',
'password' => '密码',
'hostport' => '3306',
];逐项核对:hostname 一般是 127.0.0.1、hostport 默认 3306;确认数据库已创建、账号密码正确、账号对这个库有权限。
后台打不开 / 后台 404
症状:前台正常,但进后台报 404,或忘了后台在哪。
原因:后台入口是 admin.php,如果装完改过名字(出于安全推荐改),用老地址自然进不去;也可能是伪静态没配到 admin.php 这一行。
解决:
- 默认后台地址是
https://域名/admin.php。 - 改过名的,去网站根目录找你自己起的那个
xxx.php,用"域名 + 该文件名"访问。 - 若后台仍 404,回头检查伪静态规则里有没有
admin.php那条(见上面"除首页外全部 404")。
采集之后没有数据
症状:采集任务跑了,前台却没影视数据。
原因:常见三种——分类没绑定、资源站本身没这个分类的数据、采集任务参数不对。
解决:
- 进后台确认采集时分类绑定做了:把资源站的分类映射到你自己的分类上,没绑的分类不会采。
- 换个有数据的分类试,确认资源站该分类确实有内容。
- 看采集日志有没有报错。
- 采集流程完整步骤见采集教程。
接口返回空数据
症状:对接空壳影视或别的 App 时,接口能打开但 list 是空的。
原因:库里本来就没数据,或请求的分类 ID 不对。
解决:先确认库里有影视数据,再直接测接口:
/api.php/provide/vod/?ac=videolist能返回带 list 的 JSON 就说明接口本身没问题,再逐步加 t=分类ID、wd=关键词 等参数定位。
CORS 跨域取不到数据
症状:接口在浏览器里能打开,App 或网页端却取不到数据,控制台报跨域。
原因:服务器没放开跨域访问。
解决:在 Web 服务器给接口加跨域响应头。Nginx 示例:
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
add_header Access-Control-Allow-Headers "Content-Type";生产环境建议把 * 换成具体允许的来源域名,别一直全开。
想重装 / 清掉安装状态
症状:想重新走一遍安装,但访问域名直接进了前台,不弹安装界面。
原因:装过一次后会生成安装锁文件,挡住重复安装。
解决:删掉锁文件,再访问域名就会重新进安装界面:
/application/data/install/install.lock重装会动数据
重装可能覆盖现有数据,操作前先备份数据库。
装完别忘了做安全加固,自建站暴露在公网上,不加固风险不小。