十二月 17th, 2015 by lanxinxichen@126.com

最近遇到一个坑,跳出来了,特树立一块牌子,以防止其他人掉入其中.
我的情况背景:
我使用bat封装了python执行.py文件的操作程序,在我的py文件中有一个写日志的功能,然而当我部署后,发现日志文件并没有生成.
 
首先,我怀疑的是权限不足,然后我把所有的权限都改成最高,包括使用administrator权限去执行,依然不行,没有生成日志文件.
于是这件事就搁置了,后来再想起来的时候,就有搜索,搜到了解决问题灵感来源的解决方案,然后我把python.exe执行文件给填写到起始于的输入框里面,结果发现计划任务报错,说目录无效.遂改成python.exe所处的目录,然后一开始发现项目目录里面还是没有生成文件,无意中发现python目录下面有我生成的log文件,
所以,这个起始于的目录其实就是指定的项目运行所处的根目录环境,这样的话,那我就把这个选项修改成我真实项目的执行环境的目录,运行发现,果然生成了日志文件.
到这里还没有结束.我记得cywin的命令执行默认指向的是C:/windows/system32/ ,我进入该目录,果然发现了我丢失的日志文件,高兴的拷出来到真实的运行目录里面去.
另外还需要测试的内容是:,如果采用绝对路径的话,文件存储的路径就跟执行路径无关了,猜测应该如此,以后有心情再试.
立牌在此,往后来者不要摔进去了.
感谢:
解决问题灵感来源
博客园关于计划任务详解

Posted in 服务器 Tagged with: , ,

八月 25th, 2015 by lanxinxichen@126.com

今天在处理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的文件,然后重新重新判断访问来源是不是在设定的触发页面之中,经过测试,顺利执行!

Posted in PHP Tagged with: , ,