как установить HTTP_HOST для WebTestCases в Symfony2 - PullRequest
3 голосов
/ 11 мая 2011

Мое приложение генерирует некоторые абсолютные ссылки через $ this-> get ('request') -> getHost (). Проблема: при попытке запустить тестовые случаи я получаю следующее сообщение об ошибке:

[исключение] 500 | Внутренняя ошибка сервера | Twig_Error_Runtime

[сообщение] Возникла исключительная ситуация при отображении шаблона («Неопределенный индекс: HTTP_HOST») в «:: base.html.twig» в строке 69.

Мне почему-то ясно, что при вызове моего приложения через CLI нет хоста, но я думаю, что должен быть способ предотвратить появление Symfony2 этой ошибки.

Кто-нибудь знает, как от этого избавиться?

Ответы [ 3 ]

3 голосов
/ 11 мая 2011

Вы можете создать запрос следующим образом:

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

Это позволит настроить HTTP-хост.

2 голосов
/ 12 мая 2011

Спасибо, ребята, ваши ответы ведут меня в правильном направлении. Это не проблема Symfony2, как я понял:

Это всего лишь PHP API-оболочка PHP, которая напрямую обращается к параметрам SERVER. Этот код решил мою проблему:

$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;

теперь мое приложение запускается из Интернета и CLI снова

2 голосов
/ 11 мая 2011

Возможно, что вы могли бы сделать, это вставить нужный хост прямо в заголовки запроса перед вызовом получателя.Хост извлекается путем просмотра различных значений параметров.Сначала проверяется, установлен ли параметр заголовков X_FORWARDED_HOST.Если он установлен, он возвращается, в противном случае метод getHost проверяет, установлен ли параметр заголовков HOST, затем, если установлен параметр сервера SERVER_NAME, и, наконец, установлен ли параметр сервера SERVER_ADDR.

То, что вы можете попробовать, это установить параметр заголовка HOST следующим образом перед вызовом метода getHost:

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

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

При этом, я не уверен, что это решит проблему, потому чтоупоминаемая вами ошибка говорит нам, что шаблон пытается получить значение индекса HTTP_HOST, но оно не определено.Глядя на методы $request->getHost и $request->getHttpHost, я не вижу ничего, пытающегося получить значение, имеющее HTTP_HOST в качестве индекса, но я мог его пропустить.Не могли бы вы опубликовать файл ::base.html.twig, чтобы увидеть, может ли проблема там лежать.

С уважением, Мэтт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...