SiteGround上WordPress的CRON报错:Could not open input file
以下是针对该问题的可行排查和解决方法:
确认PHP执行路径的准确性
SiteGround服务器中,直接使用php命令可能指向与站点PHP版本不匹配的全局执行文件,导致路径解析异常。先通过SSH登录服务器,执行which php获取当前站点对应的PHP完整路径(例如/usr/local/bin/php81,根据你的PHP版本调整),然后将Cron命令替换为带完整路径的版本:/usr/local/bin/php81 -q /home/yourusername/public_html/yourfolder/mycoolfile.php验证文件绝对路径的正确性
Linux系统路径区分大小写,且Cron任务默认在系统根目录执行,需确保路径无拼写错误。可通过SSH执行ls /home/yourusername/public_html/yourfolder/mycoolfile.php,若返回文件信息则路径正确,否则检查目录或文件名的大小写、拼写。改用WP-Cron触发(适配WordPress场景)
作为WordPress站点,利用WP自带的Cron机制更适配环境,避免系统Cron的路径问题:- 编辑主题的
functions.php,添加定时任务注册代码:
- 编辑主题的
// 注册每30分钟执行的自定义间隔 add_filter('cron_schedules', 'add_30min_cron_interval'); function add_30min_cron_interval($schedules) { $schedules['every_30_minutes'] = array( 'interval' => 1800, 'display' => __('Every 30 Minutes') ); return $schedules; } // 调度任务 if (!wp_next_scheduled('run_mycoolfile_task')) { wp_schedule_event(time(), 'every_30_minutes', 'run_mycoolfile_task'); } // 执行文件 add_action('run_mycoolfile_task', 'execute_mycoolfile'); function execute_mycoolfile() { require_once(ABSPATH . 'yourfolder/mycoolfile.php'); }
- 保存后,WP会自动按设定间隔触发文件执行,无需依赖系统Cron。
切换目录后执行Cron命令
在Cron命令中先切换到文件所在目录,再执行PHP文件,避免路径解析问题:cd /home/yourusername/public_html/yourfolder && php -q mycoolfile.php检查文件所有者与权限细节
通过SSH执行ls -l /home/yourusername/public_html/yourfolder/mycoolfile.php,确认文件所有者为你的主机用户名(与cPanel用户名一致)。若所有者不符,执行chown yourusername:yourusername /home/yourusername/public_html/yourfolder/mycoolfile.php修改。同时确保文件权限为644(所有者读写,其他只读),目录权限为755。
内容的提问来源于stack exchange,提问作者enigma65.0

