hvordan sette HTTP_HOST for WebTestCases i Symfony2

stemmer
3

Min søknad genererer noen absolutte linker via $ dette-> får ( 'forespørsel') -> getHost (). Problemet er: Når jeg prøver å kjøre test-tilfeller, får jeg følgende feilmelding:

[Unntak] 500 | Internal Server Error | Twig_Error_Runtime

[Melding] Et unntak har blitt kastet i løpet av gjengivelsen av en mal ( Ikke oppgitt Indeks: HTTP_HOST) i :: base.html.twig på linje 69.

Noe det er klart for meg at det ikke er vert når du ringer min app via CLI, men jeg tror det må være en måte å hindre Symfony2 fra å kaste denne feilen.

Alle vet hvordan bli kvitt det?

Publisert på 11/05/2011 klokken 14:47
kilden bruker
På andre språk...                            


3 svar

stemmer
3

Du kan opprette forespørsel som dette:

$request = Request::create('http://example.com/path');

Det vil gjøre HTTP verten settes.

Svarte 11/05/2011 kl. 15:56
kilden bruker

stemmer
2

Takket fyrene-svarene lede meg i riktig retning. Dette er ingen Symfony2 problem, som jeg fant ut:

Det er bare facebook API PHP wrapper som direkte tilgang til serverparametrene. Denne koden løste mitt problem:

$facebook = $this->container->get('facebook');
$returnUrl = 'http://'.$request->getHost();
$returnUrl .= $this->container->get('router')->generate('_validate_facebook');
$_SERVER['HTTP_HOST'] = $request->getHost();
$_SERVER['REQUEST_URI'] = $request->getRequestUri();

$loginUrl = $facebook->getLoginUrl(array(
        'req_perms' => 'publish_stream',
        'next' => $returnUrl,
        ));

return $loginUrl;

nå min app går fra web og CLI igjen

Svarte 12/05/2011 kl. 09:24
kilden bruker

stemmer
2

Kanskje det du kan gjøre er å injisere vert du trenger direkte i forespørselshoder før du ringer getter. Verten gjenvinnes ved å se på forskjellige parameterverdier. Først den overskrifter parameter X_FORWARDED_HOSTer sjekket for å se om den er satt. Hvis den er satt, blir det returnert ellers metode getHostkontrollerer om topptekst-parameteren HOSTsettes deretter hvis serveren parameteren SERVER_NAMEer satt, og endelig hvis serveren parameteren SERVER_ADDRer satt.

Det du kan prøve er å sette overskriften parameter HOSTsom dette før du ringer getHostetter:

$request = $this->get('request');
$request->headers->set('HOST', 'yourhosthere');

$request->getHost(); // Should return yourhosthere

Når det er sagt, jeg er ikke sikker på at dette vil løse problemet fordi feilen du nevne forteller oss at malen prøver å hente verdien av indeksen HTTP_HOST, men det er ikke definert. Ser vi på de metoder $request->getHostog $request->getHttpHost, jeg ser ikke noe forsøk på å hente en verdi å ha HTTP_HOSTsom indeksen, men jeg kunne ha gått glipp av det. Kan du legge filen ::base.html.twigfor å se om problemet kan ligge der.

Hilsen, Matt

Svarte 11/05/2011 kl. 16:14
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more