gpt4 book ai didi

php - Crontab 没有运行 PHP 脚本,尽管有日志

转载 作者:太空宇宙 更新时间:2023-11-04 10:54:36 25 4
gpt4 key购买 nike

我以 ec2-user 身份登录我的 AWS 服务器,但我尝试让一切都以 root 身份运行,所以我使用 sudo crontab -e 命令管理我的 crontab。这是里面的内容:

* * * * * php /var/www/html/a*****/cron/cron.php
* * * * * php /var/www/html/d*****/cron/cron.php
* * * * * /usr/bin/php -f /var/www/html/k*****/cron/cron.php
* * * * * php /var/www/html/l*****/cron/cron.php

/var/www/html/k*****/cron/cron.php 脚本如下所示:

<?php
include_once('../functions.php');
date_default_timezone_set("UTC");


// ==============================================

$content = file_get_contents("output.txt");

file_put_contents("output.txt", date('j M Y \a\t g:ia').
"\n\n---------------------\n".$content);

// ==============================================

performScheduledJobs();

sudo crontab -e View 中的其他 cron.php 文件看起来都一样,除了 //===== 之间没有位 标记。

由于这些脚本应该每分钟运行一次(根据 sudo crontab -e 设置,带有五个间隔的星号 * * * * *),我会期望 output.txt 每分钟打印一次当前时间戳(UTC 格式)。相反,它仅包含每次使用以下命令手动运行脚本时的 (UTC) 时间戳:

sudo php cron.php

该命令(当然是在 /var/www/html/k*****/cron/ 目录中)100% 成功运行。

当然,我的直觉是 cron.php 文件甚至没有被尝试运行,但是当我 sudo vi/var/log/cron我看到以下内容:

Mar 27 21:51:01 ip-172-***-***-184 CROND[32032]: (root) CMD (php /var/www/html/a*****/cron/cron.php)
Mar 27 21:51:01 ip-172-***-***-184 CROND[32033]: (root) CMD (php /var/www/html/d*****/cron/cron.php)
Mar 27 21:51:01 ip-172-***-***-184 CROND[32035]: (root) CMD (/usr/bin/php -f /var/www/html/k*****/cron/cron.php)
Mar 27 21:51:01 ip-172-***-***-184 CROND[32034]: (root) CMD (php /var/www/html/l*****/cron/cron.php)

正如我所说,运行 sudo php cron.php 命令可以工作,因此无论我的 crontab 配置有什么问题都可能。

有人有想法吗?

最佳答案

在 crond 中运行时,php 不在路径中。您需要指定 php 可执行文件的完整路径。你可以通过运行 which php

找到这是什么

当您运行 php cron.php 时,这应该输出到调用的 php 二进制文件的完整路径,并且类似于 /usr/bin/php 如果您替换 php 在你的 crontab 中使用它应该可以正常运行。

关于php - Crontab 没有运行 PHP 脚本,尽管有日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29310825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com