0

Centos で cronjobを実行しようとしていますが、ShellDispatcher のようにcrontab -eパラメーターが見つからない理由がジョブの実行時にわかりません。-app私は Cake PHP Cronjobsを読みました:

  1. 編集.bashrc・追加しましたexport PATH="$PATH:/home/phonekar/public_html/app/Console"

  2. 私のユーザーアカウントにcronjobを追加しました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また、シェルが動作することも確認しました。明確化が役立ちます。

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 に答える