3

Kohana3でURLを呼び出すためのCRONを設定しました。

php /home/user/public_html/index.php my/route/in/bootstrap.php

URLにうまくアクセスしているようです。

ただし、このエラーを受け取りました(ホストがCRONごとに送信する電子メールで返送してください)

Undefined index:  HTTP_HOST
SYSPATH/classes/kohana/url.php [ 40 ]

url.phpのソース

これはコハナシステムファイルにあります。これは、CRONジョブがHTTPヘッダーを送信していないためですか?

これを修正して機能させるにはどうすればよいですか(コアファイルをハッキングせずに)。

または、CRONを間違って実行していますか?

アップデート

Pekkaは良い答えを提供しましたが、コアファイルを変更することは避けたいと思います(最後の手段として行いますが)。

静的プロパティがあるため、Kohana3はCLIをサポートているように見えます$is_cli

http://github.com/kohana/core/blob/master/classes/kohana/core.php#L54

4

3 に答える 3

3

E_STRICT通知がオンになっているようですが、Kohanaのエラー処理がそれをキャッチします。E_STRICT未定義のインデックスについて文句を言います。CLIを介して呼び出された場合、PHPスクリプトにはHTTP_HOSTがないため、インデックスは実際には未定義です。

それにもかかわらず、スクリプトは正常に実行されている可能性があります。メッセージが表示されないようにするには、ある時点で拒否する必要がありますerror_reporting。CLIから呼び出されたときに別の構成ファイルを使用できるかどうかを知るには、Kohanaについて十分に理解していません。

error_reporting()少しハッキーですが、特定のコントローラーのを下げるだけでうまくいくかもしれません。

于 2010-03-18T23:52:58.550 に答える
2

一般的なポリシーとして、エラーをなくすためにエラー報告レベルを下げることはお勧めしません。

問題は、Pekkaが言うように、$_SERVER['HTTP_HOST']CLIモードで定義されておらず、Url絶対URLを生成するときにクラスがこれを必要とすることです。これは、 setを使用して呼び出す場合、を使用するURL::site場合、ヘルパーを使用してRSSフィードを生成する場合など、かなりの数の状況で発生する可能性があります。$protocolRequest::redirect()Feed

あなたがする必要があるのは、あなたのCRONedコントローラーのどこで絶対URLを生成しようとしているのかを理解し、それからあなたがそうする必要があるかどうかを決定することです。不要な場合は、問題のあるコードを削除すると、正常に実行されるはずです。そうした場合、エラーをオフにするだけでは役に立ちません代わりに、これをbootstrap.phpファイルに追加します。

if ( ! isset($_SERVER['HTTP_HOST'])
{
    $_SERVER['HTTP_HOST'] = '<your-domain-here>';
}

URL::baseまた、単に渡すのではなく、必要なプロトコル(おそらく「http」)を明示的に渡すことを確認する必要がありますTRUE。それ以外の場合は、現在のプロトコルを使用しますcli://

于 2010-04-16T13:20:14.020 に答える
1

別の解決策は、次のようにcronコマンドを設定することです。

wget --timeout = 99999 -O / dev / null -q http:// localhost / kohana / url / and / some / segment / or / whatever

于 2010-09-16T07:27:02.037 に答える