问:搬家后采集器像“哑巴”一样,点采集没反应,或者直接报“获取列表失败”?
报错现象:
后台能进,采集插件也显示正常,但一点“采集”按钮,浏览器右下角转圈三秒,然后弹出红色提示“获取列表失败”或者“链接超时”,有的更邪门,采集一半突然卡死,进度条永远停在87%。
原因分析:
这多半不是采集插件坏了,而是搬家时把数据库里的采集器配置表带过来了,但目标站接口的域名或IP仍指向旧服务器的本地回环地址(比如localhost或旧内网IP),尤其用宝塔面板手动打包数据库再导入时,mac_collect表里的url字段会残留旧环境的绝对路径,新服务器PHP禁用了curl或allow_url_fopen,也会导致采集器“哑火”。
解决步骤:
苹果CMS搬家手动迁移全实录,五大高频故障的人肉排雷手册
- 先查采集器配置:后台 → 采集器管理 → 编辑任意一个采集器,看“采集接口地址”里填的是不是
http://旧IP/...,如果是,全部改成http://你的新域名/...或者直接用相对路径/api.php?provide=...。 - 改数据库:用phpMyAdmin登录新库,执行SQL:
UPDATE mac_collect SET url = REPLACE(url, '旧域名或IP', '新域名');
注意别把
http://替换掉了,建议先SELECT看一眼再改。 - 检查PHP扩展:宝塔面板 → 软件商店 → PHP设置 → 安装扩展,确保勾选
curl和openssl,然后重启PHP-FPM。 - 终极测试:在服务器命令行执行
php -r "var_dump(extension_loaded('curl'));",输出bool(true)才算过。
问:搬家后播放器黑屏,或者一直转圈,但手机端能播?
报错现象:
前台视频页能打开,播放器框架在,但点播放后黑屏无反应,或者一直显示“加载中”,奇葩的是,同一视频用手机浏览器打开却能正常播放,电脑浏览器不行,控制台看报错Mixed Content或者ERR_CERT_AUTHORITY_INVALID。
原因分析:
苹果CMS的播放器默认调用https://资源,但搬家后如果后台“播放器配置”里的解析接口还写着http://(旧环境没开SSL),而新站点强制跳转HTTPS,浏览器就会拦截混合内容,更隐蔽的是,播放器使用的第三方解析接口域名在旧服务器上做了本地缓存解析(hosts绑定),搬家后新的DNS没生效,导致解析请求超时。
解决步骤:
- 改播放器配置:后台 → 视频 → 播放器配置,找到“解析接口”或“播放器地址”,把所有
http://强制改为https://(如果解析商支持),如果不支持,就在站点的Nginx配置里加一行:add_header Content-Security-Policy "upgrade-insecure-requests";
然后重载Nginx。
- 清除浏览器缓存:别笑,很多时候是浏览器缓存了旧的http资源,强制刷新(Ctrl+F5)或者用无痕窗口试。
- 检查播放器代码里的硬编码:如果用自定义播放器模板,打开
/template/你的模板/js/player.js,搜http://,全替换成(协议相对路径),这样浏览器会自动匹配当前页面协议。
问:后台登录一直提示“验证码错误”,但明明输入的没问题?
报错现象:
搬家后输入正确的账号密码和验证码,后台弹窗“验证码错误”或者“登录失败”,刷新验证码图片能出来,但永远过不去。
原因分析:
这是典型的Session目录权限不足或Session跨域时间戳错乱,搬家时没有把/data/session/目录的写权限赋予PHP-FPM运行用户(通常是www),或者旧环境的session文件里记录了旧域名,浏览器带过来的Cookie域名不匹配,导致验证码校验时读不到服务端存储的随机码。
解决步骤:
- 修目录权限:SSH执行
chown -R www:www /data/session chmod -R 755 /data/session
如果是云服务器,还要检查
open_basedir是否限制了PHP读写该目录,在php.ini里临时注释掉open_basedir测试。 - 清理Cookie:浏览器设置里删除该域名的所有Cookie,重新访问后台。
- 改配置:打开
/application/extra/config.php,找到session配置项,把prefix改成其他的值(比如mac_auth_),然后保存,再重启PHP-FPM,这能强制所有旧session失效。 - 终极方案:如果还不行,直接在数据库中执行
TRUNCATE TABLE mac_user;
然后重新添加管理员账号(密码用MD5加密),搬家后用户表重建最省事。
问:前台页面打开全是乱码,或者直接白屏,后台却能正常打开?
报错现象:
首页和列表页打开后,浏览器显示一堆锟斤拷或者纯白屏,看源代码有HTML标签,但内容全是问号,后台界面正常,说明后台模板加载没问题。
原因分析:
数据库字符集与站点配置文件不一致,搬家时用SQL导入,但导出时库是utf8mb4,导入到新库却变成了utf8(或者反过来),苹果CMS的模板文件用的是UTF-8编码,但数据库连接串里指定了charset=utf8,导致中文字符被截断。
解决步骤:
- 查库字符集:phpMyAdmin里看
mac_vod表的排序规则,如果是utf8_general_ci,没问题,如果是latin1_swedish_ci,要转,执行:ALTER DATABASE 你的库名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
然后对每张表执行
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;(可以导出SQL批量替换)。 - 改连接配置:打开
/application/database.php,把'charset' => 'utf8'改成'charset' => 'utf8mb4',同时'collation' => 'utf8mb4_general_ci'。 - 强制模板编码:如果白屏,大概率是模板的
.html文件被服务器以UTF-8 without BOM保存,但站点配置了gzip,关掉Nginx的gzip,或者在/public/index.php顶部加header('Content-Type: text/html; charset=utf-8');。 - 检查Nginx的
charset指令:如果配置里写了charset utf-8;,但文件实际是UTF-8,没问题;如果写了charset gbk;,那肯定乱码,改回utf-8。
问:安装环境检测不通过,提示“PDO驱动未开启”或者“ZipArchive不支持”?
报错现象:
首次打开安装向导,环境检测页面红色叉叉,提示PDO_MYSQL未开启、curl未安装、ZipArchive类不存在,但明明之前在旧服务器一切正常。
原因分析:
新服务器是纯净环境,PHP是编译安装的,或者用的是php.ini里被禁用了一些扩展,尤其PDO和ZipArchive是PHP的扩展,不是内置的,需要在编译时加--with-pdo-mysql和--enable-zip,如果是apt/yum安装的,可能只装了基础包。
解决步骤:
- 一键安装扩展(宝塔面板):软件商店 → PHP设置 → 安装扩展,勾选
pdo_mysql、curl、zip、fileinfo、opcache,然后重启PHP。 - 手动编译(别的面板):找源码包,进入
ext/pdo_mysql目录,执行phpize && ./configure --with-php-config=你的php-config路径 && make && make install,然后在php.ini加extension=pdo_mysql.so。 - 检查禁用函数:在php.ini里搜
disable_functions,把proc_open、exec、shell_exec等删除(如果被禁用),因为安装向导可能检测exec函数。 - 终极懒人法:不用官方安装包,直接用
php -r "new PDO('mysql:host=127.0.0.1;port=3306','root','pass');"测试,如果这条命令本身报错,那就是PHP和MySQL的连接问题,先去改MySQL的my.cnf允许TCP连接,再回来装扩展。



发表评论