0

我试图在 Centos 中运行 cronjob crontab -e,但我无法弄清楚作业何时运行,为什么它没有像-appShellDispatcher 中那样找到任何参数。我已阅读 Cake PHP Cronjobs并拥有:

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

  2. 向我的用户帐户添加了一个 cronjobcrontab -e

     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外壳可以正常工作。任何澄清都会有所帮助。

4

1 回答 1

2

警告: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

于 2014-03-14T21:07:02.917 回答