php定时执行任务没有执行,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);

}

用脚本的打印当前时间,这是每分钟执行一次

php路径没错,但是启动定时任务时工作目录不是你的php文件所在目录,所以你的代码要改下

$name=__DIR__.'/log/20161025.txt';

if(file_exists($name))

{

file_put_contents($name, '定时任务开始了');

}

感觉是路径不对,php脚本里面的相对地址改成绝对路径试试

PHP路径没错,错在PHP代码里面的一些路径,在写命令行的程序时,尽量避免使用有依赖性的东西,比如相对目录,

你这个错就出在相对目录上,你启动crontab 去执行你的php脚本前,先手动执行一次,就知错在哪里。

把你的相对路径打印一下。一定不是你想像中的路径。

你可以

locate 20161025.txt

,看下文件有没有生成。

locate

前先

updatedb

确定一下你的权限问题 执行以下crontab -l确定你已经成功添加了定时任务

[DongYao$ 19:28]➞ $crontab -l

* * * * * /bin/echo `date` >> /var/log/test.log

You have mail in /var/mail/DongYao

[DongYao$ 19:39]➞ $

[root$ 19:37]➞ $tail -f /var/log/test.log

Mon Oct 24 19:38:00 CST 2016

Mon Oct 24 19:39:00 CST 2016

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值