常见问题一:采集模块集体罢工,日志刷屏“SQLSTATE[HY000]”
报错现象描述:
搬家后,后台点击“采集”按钮,进度条走两秒就卡死,或者直接跳回列表页,查看runtime/log/下的日志,满屏都是SQLSTATE[HY000] [2002] Connection refused,偶尔夹杂着Table 'mac_vod' doesn't exist。
原因分析:
99%是数据库连接信息没同步,搬家时只拷了文件,忘了改application/database.php里的主机地址、端口、库名,如果原服务器用的是localhost,新服务器MySQL监听的是0.0.1:3307这种自定义端口,那就更要对号入座。
详细解决步骤:
苹果CMS搬家后报警不断?五个高频错误日志的急诊手册
- 打开
application/database.php,核对hostname(是否填IP或域名)、hostport(默认3306,非默认必须改)、database(库名)、username、password。 - 在服务器命令行执行
mysql -h 你的库地址 -P 端口 -u 用户名 -p,手动测试能否连上,连不上就检查防火墙、云安全组是否放行3306端口。 - 如果库名区分大小写,而Linux系统大小写敏感,检查
mac_vod这类表是否存在:use 你的库名; show tables like 'mac_vod';,不存在就重新导入备份的SQL文件。 - 改完配置,必须清除
runtime目录下的所有缓存文件(尤其temp和cache),否则旧连接池数据还在。
常见问题二:播放器黑屏或“404 Not Found”,日志报“player.js”加载失败
报错现象描述:
前台点播放,视频区域一直转圈,按F12看控制台,红色报错指向/static/player/player.js无法加载,日志中出现GET /static/player/player.js 404。
原因分析:
搬家后站点域名变了,但模板里的播放器插件路径是绝对路径(比如/static/player/),如果新站点装在子目录(如/maccms/)下,而伪静态规则没把静态资源目录重写正确,就找不到文件。
详细解决步骤:
- 检查后台-系统-“站点URL”,确认是
http://新域名还是http://新域名/子目录,在“播放器配置”里把所有资源地址改成相对路径(去掉开头的,或改为__STATIC__/player/player.js)。 - 确认伪静态规则是否包含静态文件排除项,Nginx配置中应添加:
location ~ \.(js|css|png|jpg|gif)$ { root /你的网站根目录; expires 7d; }
如果规则写错,静态文件会被路由到index.php,导致404。 - 重新生成播放器配置缓存:后台-“播放器”-“一键更新播放器配置”,然后强制刷新浏览器(Ctrl+F5)。
- 检查
/static/player/目录下文件权限,确保www用户有读权限(chmod -R 755 /static/player/)。
常见问题三:后台登录验证码不显示或登录后跳回登录页
报错现象描述:
搬家后,后台登录页验证码图片是个红叉,或者输入正确验证码提示错误;登录成功后一刷新又回到登录界面,日志里报Session写入失败。
原因分析:
最常见是runtime/session目录没有写权限,或者PHP的session.save_path配置指向了一个不可写目录,如果启用了Redis或Memcache做Session存储,但没有安装对应扩展或服务没启动,也会出现此故障。
详细解决步骤:
- 检查
runtime目录权限:chmod -R 777 runtime/(用于生产环境可改为chown -R www:www runtime并设755,但测试期建议777)。 - 打开
php.ini,确认session.save_path = "/tmp"并验证该目录可写:命令行执行php -r "echo session_save_path();",如果为空,手动设一个绝对路径。 - 若代码中配置了
session.type = redis,检查php -m | grep redis,没有就安装扩展,或者在application/extra/下禁用该配置,改回文件存储。 - 在
config.php里找到session数组,确保expire和prefix与原服务器一致,避免新旧session混淆。 - 验证码不显示:检查GD库是否安装(
php -m | grep gd),没有则安装php-gd扩展并重启PHP-FPM。
常见问题四:整站页面空白、乱码,或只显示“<?xml version...”
报错现象描述:
打开首页只有一片空白,或浏览器直接提示“网络错误”,后台登录页面正常,但前台模板全乱码(比如出现锘?字样),日志里报PHP Parse error或Output buffering相关。
原因分析:
搬家时用FTP二进制/文本模式传输不当,导致模板文件编码损坏(如UTF-8文件被转成GBK,头部出现BOM),也可能是PHP版本变了(如从5.6升到7.4),老代码里mysql_*函数被禁用直接白屏。
详细解决步骤:
- 用
Notepad++或VS Code打开application/index/view/下的index.html,检查“编码”是否为“UTF-8 无BOM”,如果带BOM,另存为“UTF-8 无BOM”并覆盖上传,记得用二进制模式重新上传所有PHP和HTML文件。 - 查PHP版本:
php -v,若为PHP7+,排查主题和插件里是否用了mysql_connect、each等废弃函数,用grep -r "mysql_" ./application搜索替换为mysqli_或PDO。 - 开启
display_errors:在application/config.php里临时把debug设为true,或修改php.ini的display_errors=On,重启PHP-FPM查看具体报错行。 - 如果空白只出现在首页,检查默认模板路径是否正确:后台-“模板”-“当前模板”是否指向了
default目录,且该目录下文件完整,缺少header.html或footer.html也会白屏。 - 清除浏览器缓存和
runtime缓存,重新生成首页静态页(若开了静态化功能)。
常见问题五:安装环境检测不通过,卡在“目录权限”或“函数禁用”
报错现象描述:
用安装包重新部署时,环境检测页面显示“runtime/”目录不可写、fileinfo扩展未启用、putenv被禁用,导致无法继续安装。
原因分析:
新环境的安全配置比旧服务器严格,比如阿里云或宝塔默认禁用部分函数,或PHP版本过高导致某些扩展未安装,搬家不是重装,但如果是换新机器跑完整安装包,就会卡这里。
详细解决步骤:
- 给
runtime、upload、application/install等目录赋权:
chmod -R 777 runtime/ upload/并检查chown -R www:www /网站根目录。 - 启用
fileinfo扩展:在宝塔面板的PHP设置里勾选“fileinfo”,或在php.ini里删除extension=fileinfo前的分号,然后systemctl reload php-fpm。 - 解除函数禁用:在宝塔面板-“PHP设置”-“禁用函数”里,把
putenv、proc_open、symlink等从列表中移除,然后重启服务。 - 如果检测提示
allow_url_fopen为Off,在php.ini里设置allow_url_fopen = On。 - 实在不行,检查PHP版本是否低于5.6或高于8.0(苹果CMS对PHP8支持不完美),建议用PHP7.4或7.3,并重新下载对应版本的安装源码。
最后一句老实话
苹果CMS搬家后的大多数“日志恐慌”,都源于“文件没传全、权限没给够、配置没改对”这三板斧,别急着删代码重装,先打开runtime/log/下最新的日志文件,按上面五类对号入座,往往十分钟内就能“消灾”,真遇到日志里报Call to undefined function,那就是PHP扩展缺了,按提示装对应扩展即可,祝迁移顺利。



发表评论