今天遇到一个问题执行crontab 执行失败 ,但是直接请求能成功
问了一些大牛为什么会执行失败的原因我总结了一下 不知道具体为什么
1.crontab是写到root用户的,所以crond服务在执行上会读取 root的$PATH变量
2.虽然crond里面写了绝对路径 但是 php执行文件里可能再次调用了php相关环境参数或者命令,这时间 它只会查找 系统的可执行目录,并不能继承你写的绝对路径
查看cron的日志发现 执行的命令也在进程中 tail -f /var/log/cron
直接执行
/usr/local/webserver/php/bin/php /data/web/xxxxx/protected/yiic_qa.php xx index
也是可以成功
然后修改了crontab -e 里面php的执行路径就成功了
执行失败的写法
0 0 * * * /usr/local/webserver/php/bin/php /data/web/xxxxx/protected/yiic_qa.php xx index
执行成功的写法
0 0 * * * /bin/php /data/web/xxxxx/protected/yiic_qa.php xx index