php - 为什么我的 cron 作业没有运行我的 PHP 脚本?

标签 php ubuntu cron crontab unlink

我在其中运行 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 作业是否真的每分钟都在运行。所以我所做的就是让我的脚本这样做:

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

但这似乎不起作用。一个 .pdf文件非常多,并且没有被删除。那么我怎么知道我的 cron 作业是否正常运行呢?

我学习这样做的来源是this , this , thisthis .
<?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.";
}

?>

最佳答案

以下 crontab 条目:

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



表示 /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php命令每分钟运行一次,就像您在终端中键入此字符串并按 Enter 一样。如果以下至少一项为真,则该命令将失败:
  • 当前用户对该文件/目录没有执行权限;
  • 该文件不是 shell 脚本,并且 shebang未指定

  • 因此,您应该确保该脚本对于运行 crontab 的用户是可执行的,并且该文件包含 shebang,例如:
    #!/usr/bin/php
    

    或者,通过显式调用 php 来运行脚本。可执行:
    * * * * * php /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php
    

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

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

    关于php - 为什么我的 cron 作业没有运行我的 PHP 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41542260/

    相关文章:

    php - 向用 PHP 创建的 csv 添加行标题?

    PHP 我的选择不起作用?

    python - 构建pycaffe时找不到hdf5库

    php - 如何运行 artisan 命令 schedule :run on hosting server? (Laravel)

    php - 字符 : ' (single quotation) when trying to save to mySql 的问题

    php - 如何获取数组中某个键的名称

    unix - tload 中的值是什么意思?

    qt - 在 Qt(Linux) 中选择串口

    PHP循环充当cronjob[确保只有一个实例运行]

    docker - 从 Dockerfile 定义一个 crontab,利用主机的 crontab 每小时运行一个容器化的 Go 程序