很多时候,Linux 的 crontab 有时会莫名其妙的不会执行。下面介绍几个思路,可以由此依次筛选。
计划任务执行有一个比较好的方法,那就是直接调用PHP的执行文件去执行PHP脚本, 例如:
#* * * * * /usr/bin/php -f /home/www/public/api/shell/test.php >> test.log
这是我本地的一个计划任务示例,详细的就不多说了,只说一句,因为这样直接执行PHP脚本,而不是通过wget,lynx,curl等,无疑是最有效率的一种方式(比较推荐)。
当然,本文不是去介绍计划任务怎么写,言归正传,导致crontab不能正常执行的原因是什么呢?我总结了下,大体是以下几种原因:
1. PHP脚本没有执行权限,可以在Linux命令行 输入 ll 即 ls -l 查看。(没有执行权限,当然不能执行啦,),确定是这种原因之后可以通过 chmod 命令去更改权限,具体的写法就不赘述了。
2. 因为直接使用PHP执行文件 去 执行PHP脚本不会通过 apache 以及 ngjnx , 自然与此有关的 $_SERVER 等变量就不能使用了,记得检查哦 --
3. 程序是否含有include or require 等加载函数,或者其他有可能使用到 相对目录的语句或者函数, 如果有的话改成 绝对路径,(在这里就不能拿人类惯用的想法去思考)