【问题标题】:Cakephp ShellDispatcher error in Centos CronjobCentos Cronjob 中的 Cakephp ShellDispatcher 错误
【发布时间】:2013-07-24 22:46:47
【问题描述】:

我试图在 Centos 中使用 crontab -e 运行 cronjob,但我无法弄清楚作业何时运行,为什么它在 ShellDispatcher 中找不到任何参数为 -app。我读过了 Cake PHP Cronjobs 并拥有:

  1. 编辑.bashrc并添加export PATH="$PATH:/home/phonekar/public_html/app/Console"

  2. 使用crontab -e向我的用户帐户添加了一个cronjob

     53 23 * * * /home/useraccount/public_html/lib/Cake/Console/cakeshell Tracking -cli "/usr/bin" -console "/home/useraccount/public_html/lib/Cake/Console" -app "/home/useraccount/public_html/app" >> /home/useraccount/public_html/tracking.log 2>&1
    

手动运行此命令可以正常工作,但是当我让作业运行时,我在循环中收到此错误:

PHP Warning:  array_search() expects parameter 2 to be array, null given in /home/useraccount/public_html/lib/Cake/Console/ShellDispatcher.php on line 320
PHP Warning:  array_splice() expects parameter 1 to be array, null given in /home/useraccount/public_html/lib/Cake/Console/ShellDispatcher.php on line 324

我查看了该文件,它似乎在期待 -app 值,而是将 null 值传递给它。我还验证了 Tracking shell 是否有效。任何澄清都会有所帮助。

【问题讨论】:

    标签: php cakephp centos crontab


    【解决方案1】:

    警告:array_splice() 期望参数 1 为数组,在 ShellDispatcher.php 中给出 null

    我在使用 cakephp 2.3.8 的控制台时遇到了这个错误,但你也可以在其他版本上遇到这个问题。 解决办法是编辑(看不到命令​​行参数) app/Console/cake 并上线:

    exec php -q "$CONSOLE"/cake.php -working "$APP" "$@"
    

    -q 添加后

    -d register_argc_argv=1 
    

    所以这条线看起来像:

    exec php -q -d register_argc_argv=1 "$CONSOLE"/cake.php -working "$APP" "$@"
    

    参考: http://www.ecommy.com/programming/cakephp/warning-array_splice-expects-parameter-1-to-be-array-null-given-in-shelldispatcher-php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-31
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      • 2013-12-23
      • 2015-09-11
      相关资源
      最近更新 更多