linux中定时任务crontab中的php任务无法执行,求可能的原因
等待被执行的test.php脚本,该脚本在本地环境可以执行,在linux上手动执行php test.php也可以执行
$name='./log/20161025.txt';
if(file_exists($name))
{
file_put_contents($name, '定时任务开始了');
}
执行 crontab -e 编辑定时任务
* * * * * /usr/bin/php /home/wwwroot/demo/test.php > /var/log/cron.log
我的尝试:
执行ps -ef | grep cron,查看定时任务进程,可以看到一个进程,也就是说定时任务在运行,所以不存在定时任务没有开启的问题
执行/usr/sbin/service cron restart,重启定时任务,cron.log中没记录,20161025.txt中也没有内容
执行chomd +x test.php 增加权限,没有效果
执行which php,返回/usr/bin/php php路径没错
暂时找不到可能的原因,求高手思路
补充:
最后测试定时任务是可以执行的
$name=__DIR__.'/log/20161025.txt';
if(file_exists($name))
{
file_put_contents($name,date('Y-m-d H:i:s',time())."\r\n",FILE_APPEND);
}
用脚本的打印当前时间,这是每分钟执行一次
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
php路径没错,但是启动定时任务时工作目录不是你的php文件所在目录,所以你的代码要改下
感觉是路径不对,php脚本里面的相对地址改成绝对路径试试
PHP路径没错,错在PHP代码里面的一些路径,在写命令行的程序时,尽量避免使用有依赖性的东西,比如相对目录,
你这个错就出在相对目录上,你启动crontab 去执行你的php脚本前,先手动执行一次,就知错在哪里。
把你的相对路径打印一下。一定不是你想像中的路径。
你可以
locate 20161025.txt
,看下文件有没有生成。locate
前先updatedb
。确定一下你的权限问题 执行以下crontab -l确定你已经成功添加了定时任务
我找个半天确实也是php脚本里面文件路径的问题,恐怖呀