初次使用定时脚本的时候,觉得神奇又好玩!简单的开机关机命令,玩的不亦乐乎。闲来无事分享我一下之前做项目的时候遇到的问题。
之前同时完成了好几个脚本,但是有一个脚本无论如何都无法运行,觉得很无奈,路径,配置都一样的写法呀,为什么不通呢?通过一点一点的调试得知原因如下:
因为用crontab在执行php文件时,它是不走apache,nginx
服务的!像$_SERVER
,$_ENV
这类变量是不能使用的,所以如果脚本对应的php代码中不能有这样的变量。
总结一下crontab无法执行php文件的情况及解决办法
一、php文件有没有执行权限
1、查看文件权限:
ls -al | grep RefundController.php
2、如果没有执行命令即可
chmod +x ./RefundController.php
二、如果有执行权限,还是无法运行
1、查看是否有创建日志文件,并赋予读写权限
这个问题我也遇见过,总是忘记!日志对应的文件夹是要自己手动创建的
eg:*/1 * * * * source /etc/profile && /home/wwwroot/test/api/yii refund/refund-query >> /home/wwwlogs/test/refund-query.log 2>&1 &
这个就要自己创建一个test
的文件夹,否则无法执行
mkdir test
2、php的路径问题
eg:
*/1 * * * * source /etc/profile && /home/wwwroot/test/api/yii refund/refund-query >> /home/wwwlogs/test/refund-query.log 2>&1 &
3、对应脚本php文件中是否出现了魔术变量的问题
如果出现就自行替换为其他方法即可