
简介面向需要快速搭建影视点播平台的站长与开发者这份苹果CMS最新三端影视系统源码整合了移动端、PC端及后台管理端可解决视频采集、会员卡密、钻石充值等典型运营需求。包内含使用教程并针对后台修改后需清理浏览器缓存、苹果CMS分类勿随意删除等关键事项给出提醒能帮助读者降低二次开发踩坑成本。整套资源共2000个文件压缩包约79.84MB文件以668个PHP后端逻辑、462个HTML页面结构、192个JS交互脚本、86个Vue组件及65个CSS样式为主辅以GIF、PNG等图片素材和SQL数据库文件可支撑从部署到界面定制的完整流程。目前已有92人学习浏览比较适合具备一定建站基础、希望基于苹果CMS快速生成稳定影视系统的中小站开发者。1. 这套三端影视系统源码能跑通的全链路方案干这一行最怕的不是没有源码而是拿到源码装不上、跑不动、后台进去了却采集不到数据。这次拆的资源是一套基于苹果CMSApple CMS的三端影视系统源码附带安装配置教程覆盖PC网页、手机H5、微信小程序三个展示端共用同一个后台和同一个视频数据库。简单说这是一套“一次采集、三端同步”的完整PHP源码工程不是只有模板的半成品。适合谁用想做影视内容站、给客户做资源站交付、或者自己研究苹果CMS二次开发的开发者都合适。新手按教程能装起来熟手可以跳过界面配置直接改模板和接口。接下来我按实际部署顺序拆先讲清楚这套系统的运行逻辑再讲安装、三端对接和采集最后把最容易翻车的几个点单独拉出来说。2. 苹果CMS的运行骨架PHP源码、数据库与三端共用的数据流2.1 苹果CMS v10的核心依赖不是PHP装上就能跑苹果CMS v10是PHP写的底层走的是ThinkPHP框架数据存MySQL缓存可以选文件、Redis或Memcached。这套源码包里的PHP工程核心目录结构一般是application、extend、template、upload这几块application存放后台逻辑template放前端模板采集接口和前台播放页的路由都在框架内处理。环境要求上PHP版本是个硬指标。v10官方要求PHP 7.0以上但实际部署时我建议直接用PHP 7.4或8.0因为老版本PHP跑起来慢而且部分扩展在新版系统镜像里已经不预装了。需要启用的PHP扩展至少包括pdo、curl、redis、fileinfo、openssl、gd这几个少了任何一个都可能报错。装完后用命令验证扩展是否齐全php -m | grep -E pdo|curl|redis|fileinfo|openssl|gd参数说明这个命令是在命令行打印当前PHP已启用的模块列表并过滤出苹果CMS运行依赖的关键扩展。如果某个扩展没出现说明PHP没装好而不是系统源码的问题。常见做法是先装好扩展再跑安装向导省得后面排查起来怀疑源码。2.2 三端为什么能共用一套数据模板引擎与API的路由分工很多人第一次接触时容易困惑三个端是不是要三套程序不用。苹果CMS的设计是“同源多端”后台只维护一份视频数据前端通过模板组切换PC和手机H5页面小程序端则通过api.php/provide/vod/这个JSON接口拉数据。PC和H5的切换逻辑走的是模板引擎。苹果CMS后台可以设置“默认模板”同时根据User-Agent判断是否跳转到手机端模板。PC端模板目录在template/PC手机端在template/WAP两套模板共用mac_vod、mac_type这些数据表。小程序则完全是另一条路不走模板渲染而是直接请求接口拿JSON数据再在uni-app工程里渲染成页面。数据流是这样的后台采集入库 → 视频信息写入mac_vod表 → PC/H5从数据库读取渲染成HTML → 小程序请求接口拿到JSON。后台采集一次三个端同时更新这是这套系统最核心的价值点。2.3 采集入库的链路别把采集接口和播放接口混为一谈影视系统的内容来源靠“采集”苹果CMS自带采集插件框架。常见的采集方式是资源站在后台提供XML或JSON接口苹果CMS定时去拉视频列表、播放地址、分类信息写进mac_vod和mac_type表。采集接口和播放接口是两个完全不同的东西不少新手在这翻车。采集接口是后台“资源库”里配置的格式是http://资源站域名/api.php/provide/vod/?acvideolist返回的是视频列表数据播放接口是前台页面用来取播放地址的格式是/api.php/provide/vod/?acdetailids视频ID。采集入库之后前台页面直接读取数据库里的播放地址字段播放器再渲染出来。接口角色典型URL作用采集列表acvideolist拉取视频列表按分类和分页入库采集详情acdetail拉取单个视频的播放地址和详情前台播放页/voddetail/视频ID.html伪静态页面输出播放器采集配置的核心参数是分类ID映射、采集页数、入库去重规则。一般做法是先手动执行一次采集确认入库数量对得上再设置定时任务每天自动采集。3. 把源码装进服务器从环境准备到后台可登录3.1 环境准备重装系统前先看一下这张表装这套系统最省事的方式是在宝塔面板里操作。先把运行环境配好再上传源码。推荐配置如下组件推荐版本说明Nginx1.20Apache也能跑但伪静态规则Nginx更顺手PHP7.4或8.0开启pdo/curl/redis等扩展MySQL5.78.0也能用需要注意数据库账号权限Redis6.x缓存加速不装也可以但采集慢文件权限755目录/644文件需确保runtime目录可写这套源码附带的教程一般会默认你有宝塔面板环境没有的话先用yum或apt装好Nginx、MySQL、PHP。重点提示一下PHP版本不要用8.2以上部分ThinkPHP底层函数在PHP 8.2里会报废弃警告虽然不影响运行但日志里全是报错排查问题时会干扰视线。3.2 安装三步走上传、运行向导、后台登录第一步把源码压缩包上传到站点根目录并解压。上传推荐用scp命令避免宝塔在线解压大文件超时scp videosite.zip root你的服务器IP:/www/wwwroot/你的站点目录/ cd /www/wwwroot/你的站点目录 unzip videosite.zip逻辑说明scp是Linux下安全拷贝文件的命令适合传大压缩包unzip解压后要留意是否多了一层嵌套目录如果解压出来是videosite文件夹套着源码需要把内层文件移到站点根目录。第二步运行安装向导。浏览器访问http://你的域名/正常情况下会跳到/index.php进入安装界面。安装向导会让你填数据库信息注意MySQL账号要选“允许外部访问”或至少“本地可写”数据库名建议用默认mac_vod。第三步设置后台入口。苹果CMS默认后台是/admin.php出于安全考虑装完后建议立刻改文件名。常见做法是重命名为/admin_mysite.php改后登录路径变成http://域名/admin_mysite.php默认管理员账号一般是admin密码在安装时设置。3.3 后台初始设置伪静态一开全站链接立即变化装完后台能登录只是第一步下一步是开伪静态。苹果CMS默认URL是/index.php/voddetail/1.html这种带入口文件的形式开了伪静态后才变成/voddetail/1.html。Nginx环境在站点配置里加入location / { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?s$1 last; } }参数说明这段配置的意思是当请求的文件在磁盘上不存在时把请求重写到index.php由ThinkPHP接管路由解析。!-e $request_filename判断文件或目录是否真实存在避免静态资源也被重写。后台“系统-参数配置-伪静态”里选择“开启”保存后去前台刷新任意一个视频详情页如果URL变成.html后缀且页面正常打开说明伪静态生效。这一步没做对后面小程序接口、采集回调都会出问题。4. 三端模板与接口对接PC、H5、小程序分别怎么配4.1 模板目录切换一份数据两张皮这套源码的PC端和H5端模板是分开的但共用同一份数据库。后台“界面-模板管理”里能看到已安装的模板列表默认会有一个PC模板和一个WAP模板。切换逻辑不需要改代码后台选择默认模板后系统根据访问设备自动分流。我一般会把PC端模板作为“主模板”所有模板文件里的图片资源路径用相对路径或全路径。一个常见坑是模板里写了绝对域名导致换域名后图片全部失效。排查方法很简单打开模板目录下的HTML文件搜索http://如果出现旧域名全部替换成当前域名或者在后台“配置-网址”里修改站点URL后重新生成缓存。4.2 小程序端对接JSON接口URL改三个地方就能出数据小程序端通常是一个独立的uni-app工程编译后分别输出微信小程序、支付宝小程序等。它的核心是请求苹果CMS的标准接口拿到JSON后渲染。接口地址只需要改三个地方api基础地址、分类ID对应关系、播放页跳转参数。以微信小程序为例请求视频列表的代码长这样// 小程序端接口请求示例 const API_BASE https://yourdomain.com/api.php/provide/vod/; function fetchVodList(page) { return new Promise((resolve, reject) { wx.request({ url: API_BASE ?acvideolistpg page, method: GET, success: (res) { // 苹果CMS返回的格式{ code:1, list: [...] } if (res.data.code 1) { resolve(res.data.list); } else { reject(new Error(接口返回异常)); } }, fail: (err) reject(err) }); }); }逻辑说明小程序端使用wx.request发起HTTP请求API_BASE指向苹果CMS的接口入口acvideolist表示获取视频列表pg是页码参数。苹果CMS接口统一返回code字段标识状态1表示成功拿到后取出list数组用于页面渲染。参数说明API_BASE必须换成你部署的域名并且这个域名要在小程序后台配置为“request合法域名”。如果后台配置了“强制HTTPS”http://会被拦截必须改成https://。4.3 播放地址与分类对应关系小程序端最容易漏的一项视频列表能显示后第二步是点进播放页。苹果CMS的播放地址存在数据库的vod_play_url字段里格式是“线路名$播放地址#线路名$播放地址”。小程序端拿到这个字段后需要先按#拆分线路再按$拆分名称和地址然后交给播放器组件。分类对应关系也要检查。小程序端的分类页一般写死了分类ID但苹果CMS后台的分类ID可能和小程序源码里的不一致。排查顺序是先看后台“分类管理”里的分类ID再对照小程序代码里的type_id两个对不上就点不进去。这个步骤没有捷径只能逐个核对。5. 三端部署避坑指南安装到上线最常见的五个问题5.1 伪静态开启后首页全部404现象后台开启伪静态后首页能打开但视频详情页全部404刷新缓存也没用。原因Nginx站点配置文件里没有添加伪静态规则或者添加的位置不对。很多人改了后台的“伪静态开启”但忘了在Nginx层面配置rewrite。解决编辑站点配置在server块内加入前面提到的location /重写规则保存后重载Nginxnginx -s reload。如果用的是宝塔直接在“站点设置-伪静态”里选择“苹果CMS”的规则模板。改完后再刷新前台页面.html后缀的链接能打开就正常了。5.2 后台登录提示密码错误重置也没用现象安装完进入后台用默认账号登录提示密码错误在后台重置密码后仍然登不进去。原因管理员密码存储在数据库的mac_admin表里密码是加密后写入的。如果你直接在数据库里UPDATE明文密码走的还是加密校验逻辑必失败。另外缓存里也可能存了旧的管理员信息。解决命令行进入MySQL执行UPDATE mac_admin SET admin_pwd MD5(新密码) WHERE admin_name admin;注意苹果CMS用的是带混淆的MD5加密纯MD5可能不生效。最稳妥的后悔药是重跑安装向导填同一个数据库名安装程序会重建管理员表并写入正确格式的密码。5.3 采集入库成功但没有播放地址现象后台采集日志显示“成功采集500条”但前台播放页面黑屏、播放器没有视频源。原因采集到的数据入库了但播放地址字段为空。通常是采集接口的acvideolist只返回了视频信息没有返回播放地址需要在采集配置里把需要播放地址的接口类型勾选上“线路采集”。另一个常见原因是被采集站限制了单次请求数量默认采集10页只成功了第一页后续页全都是空数据。解决后台“采集-资源库”里找到正在使用的采集接口把“采集状态”调整为“开启”“采集间隔”调大一点单次采集页数从10页改到3页测试。测试时观察采集日志的返回信息如果提示“数据为空”换一个资源站接口再试。5.4 小程序端请求接口提示“不在以下request合法域名列表中”现象微信开发者工具里请求接口直接报错显示URL 不在以下 request 合法域名列表中。原因微信小程序对请求域名有白名单限制。苹果CMS的接口域名没在小程序后台配置为合法域名或者域名没有启用HTTPS。这套源码里如果接口用了http://微信端直接拦截。解决在小程序管理后台“开发-开发设置-服务器域名”里添加https://你的域名。如果暂时不会配置HTTPS可以在微信开发者工具里勾选“不校验合法域名”但这只用于本地调试真机预览时还是要配好正式域名和SSL证书。5.5 模板换了之后首页样式错乱现象PC端换了新模板首页显示正常但内页错位、图片裂开、样式丢失。原因模板里引用的CSS和JS路径是相对路径但换了模板后目录结构变了导致资源加载404。苹果CMS的模板替换不光是换HTML整包模板需要同时替换对应的static静态资源目录。解决替换模板时不要只替换template下的HTML文件而是把整个模板目录上传覆盖。然后后台“界面-模板管理”里先清空缓存再选择新模板。如果还错乱用浏览器F12看Console里404的路径手动把静态资源路径改成当前模板的实际路径。6. 验证三端是否跑通一个命令行脚本快速测全链路资源装好了、接口配通了怎么快速验证三端都正常不用打开浏览器挨个点我习惯写一个bash脚本把API接口、伪静态页面、播放链接三个关键点一次性测完。这个脚本适合运维验收和交付前自检#!/bin/bash # 三端影视系统快速自检脚本 # 用法: bash check_video_site.sh yourdomain.com DOMAIN$1 if [ -z $DOMAIN ]; then echo 请输入域名例如: bash check_video_site.sh example.com exit 1 fi echo [1/3] 检测API接口是否返回JSON... API_RESULT$(curl -s --connect-timeout 10 https://$DOMAIN/api.php/provide/vod/?acvideolistpg1) echo $API_RESULT | grep -q code:1 echo API接口正常 || echo API接口异常 echo [2/3] 检测PC首页是否可访问... HTTP_CODE$(curl -s -o /dev/null -w %{http_code} --connect-timeout 10 https://$DOMAIN/) [ $HTTP_CODE -eq 200 ] echo PC首页正常 || echo PC首页异常HTTP状态码: $HTTP_CODE echo [3/3] 检测伪静态播放页路由... PLAY_CODE$(curl -s -o /dev/null -w %{http_code} --connect-timeout 10 https://$DOMAIN/voddetail/1.html) [ $PLAY_CODE -eq 200 ] echo 伪静态播放页正常 || echo 伪静态播放页异常HTTP状态码: $PLAY_CODE逻辑说明脚本分三步验证——第一步请求苹果CMS的JSON接口检查返回数据里是否有code:1确认API能正常出数据第二步请求PC首页确认网站主入口可访问第三步请求一个伪静态播放页确认Nginx重写规则生效。播放页用voddetail/1.html这个路径只要数据库里有ID为1的视频就能测出结果。参数说明-s让curl静默输出--connect-timeout 10控制超时时间-o /dev/null丢弃响应体只保留状态码-w %{http_code}输出HTTP状态码。脚本里用的域名要改成实际部署的域名同时确认服务器能外网访问。这个脚本我在每次交付前都会跑一遍。从那次客户场地里发现API能出数据、伪静态却404之后我就养成了习惯任何一次改动小到改一个模板CSS大到换服务器迁移都强制走一遍脚本再下班。不用靠眼睛看界面猜哪里坏了脚本输出的三行结果就是验收依据。希望这个习惯对你也有用。本文还有配套的精品资源点击获取