ecshop开启URL重写之后计划任务执行异常

今天在处理ecshop计划任务的时候,发现怎样都无法执行,而且由于重写了header头,导致一直获取不到错误信息,使用file_put_content() 函数一直跟踪代码,一直发现cron.php文件57行开始有以下代码:

$f_info = parse_url($_SERVER[‘HTTP_REFERER’]);
$f_now = basename($f_info[‘path’]);

$f = explode(‘ ‘, $cron_val[‘alow_files’]);
if (!in_array($f_now, $f))
{
continue;
}

也就是说如果访问链接不包含在设定的访问链接里面的时候,就跳出该循环.

而开启了url重写之后的$f_now为 XXXXX_156.html 自然匹配不到XXXX.php的$crom_val[‘alow_files]之中去.

添加一段兼容代码即可解决问题:

// 由于原本的计划任务不支持url重写,这里添加判断兼容代码
if (strstr($f_now,’html’)) {
$url = explode(‘-‘,$f_now);
$f_now = $url[0].’.php';
}

把html的链接转化成.php的文件,然后重新重新判断访问来源是不是在设定的触发页面之中,经过测试,顺利执行!



八月 25th, 2015 by