我在使用 PHP 文件运行 Crontab 时遇到一些问题。
我在 Crontab 中运行了相同的 php 脚本超过 6 个月,但几天前它们神秘地停止了正确执行代码。 Crontab 可以工作,但脚本会产生错误。另一个有趣的事情是,相同的脚本在 SSH 终端中运行没有错误。
这里应该是什么问题呢?有没有办法将 Crontab 配置为使用 SSH 终端的相同配置运行?
答案1
脚本从命令行运行而不是从 crontab 运行的最常见原因是该脚本依赖于环境变量。 Crontab 只设置了几个环境变量:通常只有HOME
、USER
、SHELL
(设置为/bin/sh
)和PATH
(设置为系统默认值)。如果您需要更多,则必须在 crontab 文件中定义它们,或者~/.profile
从命令中获取它们。
也许您安装了两个版本的 PHP,一个在命令行中第一个版本$PATH
,另一个在系统默认版本中第一个版本$PATH
,并且系统默认 PHP 最近发生了更改。但是,除了有根据的猜测之外,不可能做出更多的猜测,因为您没有说出您遇到的错误。
答案2
确保 crontab 以与您登录时相同的用户身份执行脚本。
其中一位用户的某些环境变量或文件权限可能已更改。
答案3
还有一件事要不是假设在 cron 运行的脚本中:$HOME 的值。明确使用 $HOME ,不要假设它有一些特定的价值。通过完整路径调用命令和参考文件。