Unix CRON JOB每分钟发送一次PHP邮件

时间:2014-03-04 17:07:44

标签: php shell unix cron crontab

我在 public_html 目录下有一个php邮件脚本 mailer.php 。当我通过 domain.com/mailer.php

直接访问它时,该工作正常

PHP邮件程序脚本

<?php
$from = "mail@gmail.com"; // sender
    $subject = "Subject";
    $message = "Message of mail";
    $message = wordwrap($message, 70);
    mail("mail@gmail.com",$subject,$message,"From: $from\n");
?>

但是我想每分钟使用unix shell cron job

执行这个脚本

我正在使用Putty.exe Shell终端(适用于Windows)

我已在 public_html / mailer.txt

中保存了以下cron代码
* * * * * /home/user/public_html/mailer.php

将Shell终端目录更改为 / public_html 并运行以下命令

crontab mailer.txt

现在我希望每分钟都能收到我上面定义的电子邮件ID的邮件,但它不起作用。 请帮助我找出我做错的地方。

3 个答案:

答案 0 :(得分:1)

您的文件根本不可执行。您可能想要拨打php来代替:

* * * * * php /home/user/public_html/mailer.php

......或者为了安全起见:

* * * * * /usr/bin/php /home/user/public_html/mailer.php

...其中/usr/bin/php应替换为php二进制文件的实际路径。

此外,您可以将文件本身转换为Linux脚本:

#!/usr/bin/php
<?php
$from = "mail@gmail.com"; // sender
    $subject = "Subject";
    $message = "Message of mail";
    $message = wordwrap($message, 70);
    mail("mail@gmail.com",$subject,$message,"From: $from\n");
?>

...告诉Linux它是一个可执行文件。例如,如果文件保存为/home/user/bin/mailer(不需要将其保存到Apache文档根目录中):

chmod +x /home/user/bin/mailer

现在可以安排文件本身:

* * * * * /home/user/bin/mailer

您可以在手册的Executing PHP files部分找到更多详细信息。

答案 1 :(得分:1)

变化:

* * * * * /home/user/public_html/mailer.php

* * * * * php /home/user/public_html/mailer.php

答案 2 :(得分:0)

在您的cron文件中,您需要执行:

/usr/bin/wget localhost/mailer.php

这应该执行文件中的PHP代码。但是,我建议设置.htaccess文件,以便localhost是唯一可以执行该PHP文件的人。

祝你好运!