cPanel中Cron Job无法运行PHP脚本生成缓存文件问题排查
排查Cron Job未生成缓存文件的问题
一、脚本本身问题排查
移除不必要的前端依赖
脚本开头引入的header.php是前端模板文件,Cron Job运行在CLI命令行环境,不需要加载HTML相关内容,这可能引发错误。直接删除该行:require_once(__DIR__ . '/../templates/site/header.php');检查目录与文件权限
- 确认
../public/cache/目录存在,且Cron执行用户通常是你的cPanel用户名对该目录有写入权限。手动创建并设置权限的命令参考:mkdir -p /home/你的cpanel用户名/public_html/public/cache chmod 755 /home/你的cpanel用户名/public_html/public/cache chown 你的cpanel用户名:你的cpanel用户名 /home/你的cpanel用户名/public_html/public/cache - 同样要保证
../public/error.log文件可写,否则错误日志无法生成,排查会无据可依。
- 确认
调试缓存与API逻辑
- 当前缓存TTL设为24小时,若你之前手动运行过脚本生成了缓存,Cron会直接读取旧缓存,不会触发新的API请求。可以先删除已有的缓存文件,再测试Cron。
- 增加调试日志,在
file_put_contents前后添加日志记录,确认缓存写入流程:// 写入缓存前记录 error_log("准备写入缓存到: {$cacheFile}", 3, __DIR__ . "/../public/debug.log"); file_put_contents($cacheFile, $jsonResponse); // 写入成功后记录 error_log("缓存写入完成", 3, __DIR__ . "/../public/debug.log");
二、Cron Job配置问题排查
使用完整PHP命令路径
cPanel中Cron不能仅用php命令,需使用完整路径。获取路径的方法:- 进入cPanel的
终端,执行which php,得到类似/usr/local/bin/php的路径。 - Cron命令示例:
末尾的* * * * * /usr/local/bin/php /home/你的cpanel用户名/public_html/你的脚本路径/script.php > /home/你的cpanel用户名/public_html/cron_log.log 2>&1> ... 2>&1用于将Cron的输出和错误信息写入日志,方便排查执行问题。
- 进入cPanel的
匹配PHP版本
确保Cron使用的PHP版本与你的网站一致:- 在cPanel的
选择PHP版本中确认网站使用的PHP版本。 - 替换Cron命令中的PHP路径为对应版本,比如PHP7.4的路径可能是
/usr/local/bin/php74。
- 在cPanel的
手动测试脚本执行
先在cPanel终端手动运行脚本,验证脚本本身是否能正常生成缓存:/usr/local/bin/php /home/你的cpanel用户名/public_html/你的脚本路径/script.php如果手动运行失败,优先解决脚本自身问题,再配置Cron。
三、其他验证点
- API密钥有效性:确认
$li库ID和$lk访问密钥正确,可通过Postman等工具手动调用BunnyCDN API,验证是否能返回视频数据。 - 脚本执行时长:当前脚本单次执行耗时应该较短,但如果视频列表过大,需确认是否会超过Cron的执行超时限制,可通过日志记录脚本开始和结束时间排查。
内容的提问来源于stack exchange,提问作者Ki Maruf
相关产品推荐
相关产品推荐

