【问题标题】:Using CronTab to run php scripts使用 CronTab 运行 php 脚本
【发布时间】:2011-07-05 06:42:35
【问题描述】:

我需要每小时和每天发送电子邮件。我几乎尝试了所有方法,但似乎我的 crontab 无法正常工作。如果我通过浏览器运行脚本,例如

http://localhost/Maisha/Functions/sendhourlymails.php  

我的电子邮件发送得很漂亮。(我将默认网站 localhost 移动到 public_html。)我不知道出了什么问题。我在堆栈溢出中阅读了一些帖子,包括 php 的可执行路径有帮助,因此我将 /usr/bin/php 放在要执行的实际脚本之前,但它没有。删除 /usr/bin/php 不起作用。在实际脚本不起作用之前添加 php。 我的 crontab 中有以下条目。

# m h  dom mon dow   command
0  *  *   *   *    /usr/bin/php /home/maxwell/public_html/Maisha/Functions/sendhourlymails.php
0  0  *   *   *    /usr/bin/php /home/maxwell/public_html/Maisha/Functions/senddailymails.php

【问题讨论】:

  • 如果直接在命令行运行命令会发生什么?
  • 在命令行手动运行命令会发生什么?
  • 您是否在日志中查找过错误?
  • @Alister 我该怎么做?我是linux环境的新手
  • @Eineki 我该怎么做以及哪些错误日志?

标签: php crontab


【解决方案1】:

试着把它放到你的 .php 文件中

<?php
    #!/usr/local/bin/php -q
//your code here
?>

如果你在这个文件中包含任何文件,你必须使用类似的东西:

include"/var/www/../your_absolute_path_from_root_folder/connect.php";

最后确保这个文件有正确的权限..试试

chmod 755 /var/www/.../file.php

然后,如果您使用以下命令编辑 crontab 文件

vi /etc/crontab

放一些类似的东西

10 6 * * * root php /var/www/..path../file.php

并使用此命令重新启动服务

/etc/init.d/cron restart

你已经完成了你的工作!

  • 注意提示:php 文件不必进入 public_html 文件夹!!

【讨论】:

    【解决方案2】:

    嗯,wget 是不错的选择,你也可以试试:

    0 * * * * /usr/sbin/php /usr/bin/php /home/maxwell/public_html/Maisha/Functions/sendhourlymails.php

    但由于相对路径,它可能会出错。

    你也应该看看http://php.net/manual/en/features.commandline.php

    【讨论】:

    • usr/sbin/php 在我的情况下不存在。
    【解决方案3】:

    尝试使用 wget 通过 http 调用脚本,如下所示:

    * * * * * wget http://mysite.com/myscript >/dev/null 2>&1
    

    【讨论】:

    • 我是把它放在我的 crontab 条目中还是 wget 不同?
    • wget 是一个与任何其他工具一样的 unix 实用程序,cron 执行您想要的任何命令(有限制)。
    • 顺便说一句,最好以 su 的身份完成,即将这个 cron 创建为超级用户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 2017-08-31
    • 2021-09-10
    • 2021-06-12
    相关资源
    最近更新 更多