【问题标题】:Errors while executing a PHP script with crontab使用 crontab 执行 PHP 脚本时出错
【发布时间】:2015-05-14 17:23:37
【问题描述】:

我正在使用 PHP5 制作website,这是我的设置:该网站托管在运行 Raspbian (Debian) 操作系统的 Raspberry Pi 上。我使用 Nginx 作为 php5-fpm 5.4.39 的 Web 服务器。我的网站是使用Atomik Framework 制作的,我的脚本是使用ConsoleKit 插件制作的(它有点具体,但问题可能不是)。

所以我有了我的脚本,我用php /path/to/index.php <command> 运行它。在我的 shell 中使用它时效果非常好,但是当我尝试让 cron 执行它时,它会向我打印一个错误,指出 $_SERVER['REQUEST_METHOD'] 未定义,但我可以通过将这个变量强制为某个值来解决这个问题。在那之后,什么也没有发生,我不知道该怎么办。我尝试了一切:不同的命令,在外部 bash 脚本中运行命令,使用 PHP she-bang,它们都不起作用。 有谁知道可能导致这种情况的原因?也许 cron 可以运行的不同命令可以解决问题? “没有用户”(我猜,我不是 Linux 专家)运行脚本是个问题吗?

【问题讨论】:

  • 您是否包含任何其他文件,require_onceinclude_once?因为从 cron 运行时这些路径可能会出现问题

标签: php linux bash nginx cron


【解决方案1】:

你可以在你的 cron 中像这样通过 http 触发 php 代码:

30 11 * * * /usr/bin/wget http://www.example.com/cron.php 

【讨论】:

  • 是的,但是该脚本无法通过网络获得,因此没有人可以运行它。真的是网站外的脚本,做隐藏的数据库操作。
【解决方案2】:

要调试问题,您需要访问日志。

*/1 * * * * full_path_to_your_php_script.php >> full_path_to_your_log_file.log 2>&1

然后检查 full_path_to_your_log_file.log 文件

【讨论】:

  • 是的,我已经尝试过了。当我将$_SERVER['REQUEST_METHOD'] 变量强制为'GET' 时,我什么也得不到。当我没有设置这个变量时,我有一堆来自 Atomik Framework 的错误,说这个变量没有设置并且脚本无法继续(尽管我在 shell 中执行脚本时没有收到这些错误,并且变量甚至都没有设置!真的很奇怪……)。
猜你喜欢
  • 2016-03-02
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
相关资源
最近更新 更多