我试图用crontab -e
在Centos中运行cronjob,但我无法弄清楚作业何时运行,为什么它在ShellDispatcher中找不到-app
的任何参数。我读过了
Cake PHP Cronjobs并且:
.bashrc
并添加了export PATH="$PATH:/home/phonekar/public_html/app/Console"
使用crontab -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
shell的工作原理。任何澄清都会有所帮助。
答案 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" "$@"