php - 为什么 crontab 不执行我的 PHP 脚本?

标签 php crontab

我已经构建了一个 php 文件来检查一些结果,所以我需要设置一个 cronjob。

我设置了一个每 30 分钟运行一次,以便发送结果。但是,我不知道为什么我的 crontab 没有每 30 分钟运行一次。

我是这样设置crontab的:

*/30 * * * * php /var/www/html/result.php

我已经确认我的文件目录是正确的。我不确定的是时间部分:是否可以使用 */30 * * * *30 * * * * ?我设置了 */30 * * * * 但没有用。

最佳答案

给定

*/30 * * * * php /var/www/html/result.php

它不工作的原因有多种:

  1. 首先重要的是检查 php/var/www/html/result.php 的简单执行。这是必需的。但遗憾的是,做到这一点并不意味着问题就解决了。

  2. 必须添加 php 二进制文件的路径。

    */30 * * * * php /var/www/html/result.php
    

    改成

    */30 * * * * /usr/bin/php /var/www/html/result.php
    

    或来自 which php 的任何内容。

  3. 检查脚本对运行 crontab 的用户的权限。

    赋予文件执行权限:chmod +x file。并确保 crontab 由有权执行脚本的用户启动。还要检查用户是否可以访问文件所在的目录。

  4. 为了安全起见,也可以在脚本最前面加上php路径,如:

    #!/usr/bin/php -q
    <?php
    
     ...
    
    ?>
    
  5. 确保用户有权使用 crontab。查看他是否在/etc/cron.d/deny文件中。另外,做个基础测试看看是crontanb还是php的问题。

    * * * * * touch /tmp/hello
    
  6. 将脚本的结果输出到日志文件,如William Niu suggested .

    */30 * * * * /usr/bin/php /var/www/html/result.php > /tmp/result
    
  7. 使用-f选项执行脚本:

    */30 * * * * /usr/bin/php -f /var/www/html/result.php > /tmp/result
    
  8. 确保 crontab 中的格式正确。例如,您可以使用网站 Crontab.guru 来这样做.


综上所述,可能的原因有很多。其中之一应该可以解决问题。

关于php - 为什么 crontab 不执行我的 PHP 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7397469/

相关文章:

python - celery :启动时启动任务

spring - 执行代码时如何阻止 Spring 批处理计划作业在第一次运行?

linux - 如何测试 cron 作业?

php - 关于推广免费资源的好方法的建议

bash - Ubuntu 脚本在 CRON 中不起作用

php - 每月执行 2 次和 3 次 CRON?

java - 在 Java 中使用 PHP 和 Mapreduce 从 HBase 添加/查看/删除数据?

php - 在 MySQL + PHP 中计算记录的最佳实践

php - migs(万事达卡虚拟支付客户端)集成 php

php - 我如何使用 PHP 以用户先前提交的答案的形式为动态表播种?