ubuntu - linux中定时任务crontab中的php任务无法执行,求可能的原因

php中文网
发布: 2016-12-01 01:28:01
原创
1568人浏览过

等待被执行的test.php脚本,该脚本在本地环境可以执行,在linux上手动执行php test.php也可以执行

<code>$name='./log/20161025.txt';
if(file_exists($name))
{
    file_put_contents($name, '定时任务开始了');
}</code>
登录后复制

执行 crontab -e 编辑定时任务

<code>* * * * * /usr/bin/php /home/wwwroot/demo/test.php > /var/log/cron.log </code>
登录后复制

我的尝试:

  • 执行ps -ef | grep cron,查看定时任务进程,可以看到一个进程,也就是说定时任务在运行,所以不存在定时任务没有开启的问题

    慧中标AI标书
    慧中标AI标书

    慧中标AI标书是一款AI智能辅助写标书工具。

    慧中标AI标书 120
    查看详情 慧中标AI标书
  • 执行/usr/sbin/service cron restart,重启定时任务,cron.log中没记录,20161025.txt中也没有内容

    立即学习PHP免费学习笔记(深入)”;

  • 执行chomd +x test.php 增加权限,没有效果

  • 执行which php,返回/usr/bin/php php路径没错

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

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

<code>$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);
}</code>
登录后复制

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

回复内容:

等待被执行的test.php脚本,该脚本在本地环境可以执行,在linux上手动执行php test.php也可以执行

<code>$name='./log/20161025.txt';
if(file_exists($name))
{
    file_put_contents($name, '定时任务开始了');
}</code>
登录后复制

执行 crontab -e 编辑定时任务

<code>* * * * * /usr/bin/php /home/wwwroot/demo/test.php > /var/log/cron.log </code>
登录后复制

我的尝试:

  • 执行ps -ef | grep cron,查看定时任务进程,可以看到一个进程,也就是说定时任务在运行,所以不存在定时任务没有开启的问题

  • 执行/usr/sbin/service cron restart,重启定时任务,cron.log中没记录,20161025.txt中也没有内容

    立即学习PHP免费学习笔记(深入)”;

  • 执行chomd +x test.php 增加权限,没有效果

  • 执行which php,返回/usr/bin/php php路径没错

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

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

<code>$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);
}</code>
登录后复制

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

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

<code>$name=__DIR__.'/log/20161025.txt';
if(file_exists($name))
{
    file_put_contents($name, '定时任务开始了');
}</code>
登录后复制

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

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

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

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

<code>[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
</code>
登录后复制
相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号