为什么 Crontab 会给我的 PHP 脚本一个错误,而从终端运行它却没有?

为什么 Crontab 会给我的 PHP 脚本一个错误,而从终端运行它却没有?

我在使用 PHP 文件运行 Crontab 时遇到一些问题。

我在 Crontab 中运行了相同的 php 脚本超过 6 个月,但几天前它们神秘地停止了正确执行代码。 Crontab 可以工作,但脚本会产生错误。另一个有趣的事情是,相同的脚本在 SSH 终端中运行没有错误。

这里应该是什么问题呢?有没有办法将 Crontab 配置为使用 SSH 终端的相同配置运行?

答案1

脚本从命令行运行而不是从 crontab 运行的最常见原因是该脚本依赖于环境变量。 Crontab 只设置了几个环境变量:通常只有HOMEUSERSHELL(设置为/bin/sh)和PATH(设置为系统默认值)。如果您需要更多,则必须在 crontab 文件中定义它们,或者~/.profile从命令中获取它们。

也许您安装了两个版本的 PHP,一个在命令行中第一个版本$PATH,另一个在系统默认版本中第一个版本$PATH,并且系统默认 PHP 最近发生了更改。但是,除了有根据的猜测之外,不可能做出更多的猜测,因为您没有说出您遇到的错误。

答案2

确保 crontab 以与您登录时相同的用户身份执行脚本。

其中一位用户的某些环境变量或文件权限可能已更改。

答案3

还有一件事要不是假设在 cron 运行的脚本中:$HOME 的值。明确使用 $HOME ,不要假设它有一些特定的价值。通过完整路径调用命令和参考文件。

相关内容