Centos Cronjob中的Cakephp ShellDispatcher错误

时间:2013-07-25 07:10:07

标签: php cakephp centos crontab

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

  1. 已修改.bashrc并添加了export PATH="$PATH:/home/phonekar/public_html/app/Console"
  2. 使用crontab -e

    为我的useraccount添加了一个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
    
  3. 手动运行此命令工作正常,但是当我让作业运行时,我在循环中得到此错误:

    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的工作原理。任何澄清都会有所帮助。

1 个答案:

答案 0 :(得分:2)

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

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

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

在-q add

之后
-d register_argc_argv=1 

所以该行看起来像:

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

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