【问题标题】:How can I debug a Codeigniter Cron job that only runs the default controller and action when called?如何调试仅在调用时运行默认控制器和操作的 Codeigniter Cron 作业?
【发布时间】:2012-01-06 17:40:20
【问题描述】:

我正在 Codeigniter 2.1.0 上运行一个新站点并配置了以下 Cron 作业:

php -q /home/overstoc/www/admin/index.php  cron update

发送给我的输出显示只有默认控制器和默认操作被调用。任何正在发送的参数都会被忽略。

关于调试此问题或导致此问题的已知错误的任何建议?


登录服务器后,我可以通过 SSH 手动成功加载所需的控制器和操作。但是,Cron 作业没有传递请求的参数。

【问题讨论】:

  • 你试过从浏览器手动运行它吗
  • 是的,我在使用浏览器时可以成功调用cron控制器中的任何操作。
  • 很多时候你会看到人们使用对像 Lynx 这样的文本浏览器的调用来让它作为一个简单的页面请求而不是 CLI 代码运行。
  • 我之前使用 wget 和 curl 来实现最终结果,但在最近发生的一些事件之后,我需要使其更加安全和受保护。我知道我可以在脚本中只限制本地服务器,但我希望它能够工作。我可以在一个测试 Kohana 站点上做得很好,但到目前为止还没有成功。

标签: php codeigniter cron command-line-interface


【解决方案1】:

经过进一步研究,我能够确定 php 有两种运行模式:cgi 或 cli。在 shell 中使用php -v 进行测试后,我确认它已配置为 cli,但使用 Cron 作业运行相同,我看到结果是 php 作为 cgi 运行。

为了解决这个问题,我重新配置了我的 Cron 作业,如下所示:

/usr/local/bin/php /home/overstoc/www/admin/index.php cron update

我假设 Cron 作业正在调用的默认 php 具有 cgi 配置,其中服务器共享为 cli。

【讨论】:

  • 任何人都可以详细说明默认调用的 php 的位置以及为什么它会作为 cgi 运行?另外,为什么这与在 shell 中调用 php 不同?
猜你喜欢
  • 1970-01-01
  • 2017-05-25
  • 2015-01-26
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
相关资源
最近更新 更多