为什么我的 cron 作业不是 运行 我的 PHP 脚本?

Why isn't my cron job Not running my PHP script?

我是 运行ning Ubuntu 16.04 OS 和里面的 LAMPP。我想每分钟安排一个 cron 作业到 运行,并执行一个 PHP 脚本。所以这就是我所做的:

打开终端并输入crontab -e

它在VIM打开了CronTab文件,我按ESC进入INSERT模式,然后写了下面的命令:

* * * * * /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php

然后我按:wq保存并退出。在终端中收到 installing new crontab 通知。

现在我的实际脚本应该检查 LAMPP 本地服务器中的目录是否存在 .pdf.docx 文件,如果存在,那么它应该做一些进一步的工作,但是自从从那开始,我需要检查 cron 作业是否 actually 运行ning 每分钟。所以我所做的就是让我的脚本这样做:

如果目录中存在扩展名为 .pdf pr docx 的文件,它将删除它们。 这样我就会知道 cron 作业是否有 运行.

但这好像不行。 .pdf 文件非常多,而且没有被删除。那么我怎么知道我的 cron 作业是否 运行ning 正确?

我学习这件事的来源是this, this, this and this

<?php

$pdfFileName = 'dumps/*.pdf';

$docxFileName = 'dumps/*.docx';

if ( (count(glob($pdfFileName)) > 0)   ||   (count(glob($docxFileName)) > 0) ) {

    /***********************************************/
    /*************** if the file exists ************/
    /***********************************************/

    if (file_exists($pdfFileName)) {
        unlink($pdfFileName);
    }

    if (file_exists($docxFileName)) {
        unlink($docxFileName);
    }

} else {
    echo "File does not exist.";
}

?>
* * * * * php /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php

以下 crontab 条目:

* * * * * /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php

表示 /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php command 每分钟 运行 就像您在终端中键入此字符串并按 Enter。如果至少满足以下条件之一,该命令将失败:

  • 当前用户没有file/directory;
  • 的执行权限
  • 该文件不是 shell 脚本,并且未指定 shebang

所以你应该确保脚本对于 运行s crontab 的用户是可执行的,并且文件包含 shebang,例如:

#!/usr/bin/php

或者,运行 通过显式调用 php 可执行文件的脚本:

* * * * * php /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php

如果 phpPATH 中不可用,请指定 php 的完整路径,或将适当的路径添加到 PATH 环境变量。最流行的实现允许通过 crontab 设置 PATH,例如:

PATH=/bin:/sbin:/usr/sbin:/usr/bin:/opt/bin:/usr/local/bin

(在带有命令的条目之前。)