linux 每天在运行Fedora的本地机器上执行PHP脚本Cron

zbwhf8kr  于 2023-06-21  发布在  Linux
关注(0)|答案(1)|浏览(130)

我知道这是一个常见的问题,为克伦,但我已经尝试了几乎所有我发现,似乎没有什么工作。
我有一个php脚本:home/user/path/to/file/script.php
通过其提供的库连接到API,并发送一封电子邮件,其中包含找到的结果。
到目前为止,我试过:
1.将脚本放在etc/cron.daily

  • crontab -e并在那里写道:
  • */1 * * * * /usr/bin/php /home/user/path/to/file/script.php
  • */2 * * * * /usr/bin/php /home/user/path/to/file/script.php
  • 00 * * * * /usr/bin/php /home/user/path/to/file/script.php
  • */1 * * * * root /usr/bin/php /home/user/path/to/file/script.php及其他

crontab -l确实显示了我通过crontab -e输入的最新cron作业,但到目前为止,他们还没有发送电子邮件或任何东西。当我通过终端运行脚本时,它可以完美地执行。

ego6inou

ego6inou1#

Cron作业有时会默默地失败,这使得调试可能出错的地方变得困难。有几件事可能会导致这个问题,但没有更多的信息,我将尝试涵盖最常见的情况:
环境差异:当cron运行脚本时,它是在一个最小的环境中运行的。它可能无法访问您的终端会话所访问的所有路径和环境变量。这通常是脚本在终端中工作而在cron中运行时不能工作的原因。如果您的PHP脚本或它使用的API库依赖于设置的某些环境变量,这可能会导致脚本失败。
需要完整路径:Cron需要绝对路径来执行脚本或命令。请确保您提供了PHP脚本的完整路径,以及脚本中的任何文件操作的完整路径。
邮件设置:如果cron作业出错,它将尝试向执行cron的用户帐户发送电子邮件。如果您没有收到电子邮件,可能是邮件子系统配置不正确。检查您的邮件日志,看看是否有任何问题。
PHP错误报告:您可能需要确保PHP配置为显示错误。这可以通过在php.ini文件中将error_reporting设置为E_ALL并将display_errors设置为On来完成,或者在PHP脚本的顶部添加以下行:

error_reporting(E_ALL);
ini_set('display_errors', 1);

Cron测井:将输出重定向添加到cron作业,以记录输出以进行调试。这可以帮助你找出哪里出了问题。例如:

*/1 * * * * /usr/bin/php /home/user/path/to/file/script.php >> /home/user/path/to/cron.log 2>&1

这将把脚本的结果和所有错误输出到cron.log。
PHP CLI版本:也有可能命令行(/usr/bin/php)中使用的PHP版本与Web服务器使用的版本不同。通过在终端中运行/usr/bin/php -v来检查PHP CLI版本。
文件权限:确保脚本具有正确的文件权限并且可执行。
如果仍然有问题,提供cron日志的输出和脚本生成的任何错误消息将有助于进一步诊断问题。

相关问题