Frage

Ich habe einen Cron eingerichtet, um eine URL in Kohana 3 anzurufen.

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

Es scheint auf die URL -Geldstrafe zuzugreifen.

Ich habe diesen Fehler jedoch erhalten (senden Sie in einer E -Mail, die mein Host pro Cron sendet, zurück)

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

Url.Php Quelle

Das befindet sich in einer Kohana -Systemdatei. Liegt das daran, dass der Cron -Job keine HTTP -Headers sendet?

Wie würde ich das beheben und es zum Laufen bringen (hoffentlich ohne die Kerndateien).

Oder mache ich den Cron falsch?

Aktualisieren

Pekka lieferte a gute Antwort, Ich möchte jedoch vermeiden, die Kerndateien zu ändern (obwohl ich es als letztes Ausweg werde).

Es scheint Kohana 3 zu sein tut Unterstützung für CLI, da es ein statisches Eigentum gibt $is_cli.

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

War es hilfreich?

Lösung

Es scheint, als hätten Sie E_STRICT Die Benachrichtigung wurde eingeschaltet, und Kohanas Fehlerbehebung fängt das auf. E_STRICT beschwert sich über undefinierte Indizes. Der Index ist in der Tat undefiniert, da in einem PHP -Skript kein http_host auf dem CLI aufgerufen wird.

Die Chancen stehen gut, dass Ihr Skript trotzdem gut ausgeführt wird. Sie müssten sich ablehnen error_reporting Irgendwann, um zu verhindern, dass die Nachricht angezeigt wird - ich kenne Kohana nicht gut genug, um zu wissen, ob Sie eine andere Konfigurationsdatei verwenden können, wenn Sie aus der CLI aufgerufen werden.

Vielleicht nur die herunter drehen error_reporting() In Ihrem spezifischen Controller macht es den Trick, obwohl es ein bisschen hackig ist.

Andere Tipps

Als allgemeine Richtlinie würde ich darauf hinweisen, dass die Fehlerberichterstattung von Fehler nur abgelehnt wird, damit Fehler verschwinden.

Das Problem ist, dass, wie Pekka sagt,, $_SERVER['HTTP_HOST'] ist im CLI -Modus nicht definiert und der Url Die Klasse braucht dies, um absolute URLs zu generieren. Dies kann unter einigen Umständen passieren, zum Beispiel beim Anruf URL::site mit $protocol einstellen oder bei Verwendung Request::redirect(), oder beim Generieren eines RSS -Feeds mit dem Feed Helfer.

Was Sie tun müssen, ist zu trainieren, wo Sie in Ihrem gekrönten Controller versuchen, eine absolute URL zu generieren, und dann zu entscheiden, ob Sie sein müssen. Wenn Sie es nicht benötigen, entfernen Sie den beleidigenden Code und er sollte gut laufen. Wenn du tun, Wenn Fehler nur ausgeschaltet werden, helfen Sie Ihnen nicht. Fügen Sie dies stattdessen zu Ihrem hinzu bootstrap.php Datei:

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

Sie müssen auch sicherstellen, dass Sie das gewünschte Protokoll explizit übergeben (vermutlich "http") URL::base anstatt nur zu bestehen TRUE. Andernfalls wird das aktuelle Protokoll verwendet, das sein wird cli://.

Eine andere Lösung besteht darin, den Cron -Befehl wie diesen festzulegen:

WGet -Timeout = 99999 -o/dev/null -q http: // localhost/kohana/url/und/einige/segment/oder/was auch immer

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top