Es gibt keinen Host, wenn eine App in der CLI-Umgebung ausgeführt wird, da es sich nicht um eine Webanforderung handelt. Sie müssen die Basis-URL selbst konfigurieren.
Zitat aus der Dokumentation:
App.fullBaseUrl
Der Fully Qualified Domain Name (einschließlich Protokoll) root Ihre Anwendung. Dies wird verwendet, wenn absolute URLs generiert werden. Standardmäßig wird dieser Wert unter Verwendung der $_SERVER
Umgebung generiert. Sie sollten es jedoch manuell definieren, um die Leistung zu optimieren, oder wenn Sie Bedenken haben, dass Personen den Header Host
manipulieren. In einem CLI-Kontext (von Shells) kann die fullBaseUrl
von $_SERVER
nicht gelesen werden, da kein Webserver beteiligt ist. Sie müssen selbst angeben, wenn Sie URLs von einer Shell generieren müssen (z. B. beim Senden von E-Mails).
So kann man entweder so konfigurieren, dass über App.fullBaseUrl
Configure::write('App.fullBaseUrl', 'http://localhost');
oder ein wenig mehr spezifisch, so dass es gilt nur für den Router, über Router::fullBaseUrl()
Router::fullBaseUrl('http://localhost');
Sie können entweder so konfigurieren, dass in Ihre Anwendungskonfiguration (config/app.php
), so dass Ihre App selbst auf normalen Webanfragen nicht mehr dynamisch erstellt wird und sie daher im Test verfügbar ist Oder, wenn Sie nur auf die Testsuite anwenden möchten, legen Sie es entweder in Ihren Bootstrap-Test (tests/bootstrap.php
), um es global anzuwenden, oder legen Sie es in Ihren individuellen Testfalldateien fest.
Das ist es, was die CakePHP-Core-Testsuite auch tut. Wenn Sie sich nicht sicher sind, können Sie sich einen Blick auf die Kerntests werfen.
Siehe auch
'URL-> build ([url array], true)', ist es das, was Sie versucht? – arilia
Ja :) (bearbeitete Frage, um das zu zeigen) –