繁体   English   中英

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

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

我正在运行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 pr docx的文件,则将其删除。 这样,我将知道cron作业是否已运行。

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

我学做这件事的来源是这个这个这个这个

<?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 命令每分钟运行一次,就像在终端中键入此字符串并按Enter一样 如果满足以下至少一项,则命令将失败:

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

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

#!/usr/bin/php

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM