Cron运行但功能不起作用

San*_*ath 6 php cron crontab

我有几个PHP文件由cron运行.我使用命令设置了crons-

crontab crontab.txt
Run Code Online (Sandbox Code Playgroud)

在crontab.txt文件中,我写了这样的cron命令: -

#(Updating tutor activities) - every minute
* * * * * /usr/bin/wget -O - -q -t 1 http://project/cron/tutor_activities.php
Run Code Online (Sandbox Code Playgroud)

但是没有一个功能正常工作(数据库查询,发送提醒邮件等).手动运行URL有效.

然后我把我的邮件地址放进去MAILTO收邮件.在邮件中,我收到了该页面的整个HTML源代码.邮件的期望是什么?为什么我的功能不起作用?

更新
如果我将我的cron命令更改为

 #(Updating tutor activities) - every minute
    * * * * * /usr/bin/wget http://project/cron/tutor_activities.php
Run Code Online (Sandbox Code Playgroud)

仍然没有成功,这来自我的邮件 -

--15:03:01--  http://project/cron/tutor_activities.php
          => `tutor_activities.php'
Resolving project... IP Address
Connecting to test.project|IP Address|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://project./ [following]
--15:03:01--  http://project./
          => `index.html.1'
Resolving project.... IP Address
Connecting to project.|IP Address|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://project/home/ [following]
--15:03:01--  http://project/home/
          => `index.html.1'
Resolving project... IP Address
Connecting to wproject|IP Address|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
index.html.1 has sprung into existence.
Retrying.
Run Code Online (Sandbox Code Playgroud)

和大量的index.html.1,index.html.2文件正在积累在我的项目的根.我不希望创建这些文件.只想要文件执行.

如果我使用两个命令中的任何一个,结果相同 -

   * * * * * /usr/bin/wget http://project/cron/tutor_activities.php

   * * * * * wget http://project/cron/tutor_activities.php
Run Code Online (Sandbox Code Playgroud)

php带有MAILTOset的运行命令发送给我错误/ bin/sh:php:命令未找到.

* * * * * php /path/to/test.php
Run Code Online (Sandbox Code Playgroud)

所以,我无法使用php命令.

mailto()在test.php中写了一个简单的内容.通过cron运行时不会发送邮件(使用wgetphp失败),但手动运行URL会起作用.

我的问题
为了再次说清楚,我的主要问题是cron文件中的功能没有运行.创建文件是次要问题.

任何帮助,将不胜感激

谢谢,
Sandeepan

oez*_*ezi 7

如果你想把一个网址称为cronjob,你将不得不使用像wget这样的东西.如果它是你的服务器上的PHP脚本,它将更容易使用php /...pathtomyscript.../cron/tutor_activities.php

  • 也许你必须给php解释器的整个路径(比如"/ etc/php5/bin/php")而不是只写"php" (3认同)
  • 在命令行上运行`which php`,然后将该路径放入cron,如oezi建议的那样. (2认同)

Nis*_*ava 7

尝试

哪个php

返回的路径应该放在运行Cron文件的命令中.如果你通过Shell设置Cron,它不会产生任何问题,但要确保,当你是的时候尝试给出绝对路径试图运行一个PHP页面.

/ path/to/php/path/to/cron/script /

如果问题仍然存在,请尽量给你这样的命令;随意讨论.


San*_*ath 1

我自己发现了问题。我没有在手动运行的 crontab 文件中放入相同的 URL,这是我的错误。

手动运行时,我只是在 URL 中输入 test ,我的浏览器保存的 URL 列表出现,我选择了 URL http://www.test.project.com/cron/tutor_activities.php,但在我放入的 crontab 文件中http://test.project.com/cron/tutor_activities.php。我错误地认为这会运行http://www.test.project.com/cron/tutor_activities.php(因为我们有一个重写规则要添加www

但重写规则将其重定向到http://www.test.project.com/home. 这就是邮件中包含 HTML 内容的原因。

因此,在这里要学习的最重要的事情是确保我们不会错过细节,并且不要假设我们所做的一切都是正确的。就我而言,最好将工作 URL 复制粘贴到 cron 文件中。