検索

ホームページ  >  に質問  >  本文

ubuntu - 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 

我的尝试:

暂时找不到可能的原因,求高手思路

补充:
最后测试定时任务是可以执行的

$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中文网2895日前518

全員に返信(5)返信します

  • 伊谢尔伦

    伊谢尔伦2017-04-10 17:27:08

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

    $name=__DIR__.'/log/20161025.txt';
    if(file_exists($name))
    {
        file_put_contents($name, '定时任务开始了');
    }

    返事
    0
  • PHP中文网

    PHP中文网2017-04-10 17:27:08

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

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-10 17:27:08

    PHP路径没错,错在PHP代码里面的一些路径,在写命令行的程序时,尽量避免使用有依赖性的东西,比如相对目录,
    你这个错就出在相对目录上,你启动crontab 去执行你的php脚本前,先手动执行一次,就知错在哪里。
    把你的相对路径打印一下。一定不是你想像中的路径。

    返事
    0
  • 迷茫

    迷茫2017-04-10 17:27:08

    你可以locate 20161025.txt,看下文件有没有生成。locate前先updatedb

    返事
    0
  • ringa_lee

    ringa_lee2017-04-10 17:27:08

    确定一下你的权限问题 执行以下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
  • キャンセル返事