【问题标题】:Executing PHP scripts using crontab使用 crontab 执行 PHP 脚本
【发布时间】:2016-03-02 05:23:50
【问题描述】:

我正在尝试使用 crontab 执行 PHP 脚本,但它似乎不起作用。我正在运行 AWS EC2 Linux,这是 PHP 脚本:

  FOREACH (GLOB("*.jpg") AS $filename) {
     ECHO "$filename size " . FILESIZE($filename) . "\n";
     UNLINK($filename);
  }

  FOREACH (GLOB("*.jpeg") AS $filename) {
     ECHO "$filename size " . FILESIZE($filename) . "\n";
     UNLINK($filename);
  }

  FOREACH (GLOB("*.gif") AS $filename) {
     ECHO "$filename size " . FILESIZE($filename) . "\n";
     UNLINK($filename);
  }

  FOREACH (GLOB("*.png") AS $filename) {
     ECHO "$filename size " . FILESIZE($filename) . "\n";
     UNLINK($filename);
  }

当我从浏览器手动执行此脚本时,它可以正常工作。但是使用 crontab 不起作用

这是我的 cron 命令:

00 * * * * php /var/www/html/*****/*****/delete.php

这是日志:

11 月 28 日 02:12:01 ip-##-##-##-## CROND[#####]: (root) CMD (/usr/bin/php /var/www/html/*****/*****/delete.php)

我可能做错了什么?

【问题讨论】:

  • 您对 glob 的调用没有指定完整的目录路径,因此他们正在当前目录中查找文件,您可能需要确保脚本在正确的当前目录下运行。例如00 * * * * cd <some-directory> && php /var/www/html/*****/*****/delete.php

标签: php amazon-web-services amazon-ec2 cron


【解决方案1】:

我刚遇到类似的问题... Cron is setup correct (I think) but is not running

它现在对我有用:

直接编辑 /etc/crontab 并确保检查您的路径。 (你甚至可以像这样 cd 进入正确的目录,也许这也能解决你的问题..)

00 * * * * cd /var/www/html/*****/*****/ && php ./delete.php

还要检查是否只有 php 可以解决问题。 调用:

which php

查看 PHP 的完整路径并改用它。

【讨论】:

    【解决方案2】:

    如果它在浏览器中运行良好,那么您可以将 cron 作业设置如下,

    00 * * * * wget -q -O /dev/null http://example.com/delete.php
    

    这将与您在浏览器中调用相同,只需将“http://example.com/delete.php”更改为您在浏览器中调用的 url。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      相关资源
      最近更新 更多