Развертывание Symfony2 из TravisCI в Heroku после ошибки успешной сборки пустой экран

Я получаю пустой экран, но вот результат из журнала ошибок. Похоже, что все ожидает до / tmp / build_xxxx …

оба разработчика & Прод работает нормально локально.

Код здесь … https://github.com/TransformCore/dial-tone-frontend

2014-11-25T14: 43: 27.388147 + 00: 00 heroku [router]: at = info method = GET path = «/ css / bootstrap.css» host = dial-tone-frontend.herokuapp.com request_id = 1bdcc1f4-4d8b -42b0-a85d-8b265d2665bd fwd = «80.5.64.178» dyno = web.1 connect = 1ms service = 8ms status = 500 bytes = 208
2014-11-25T14: 43: 27.388931 + 00: 00 приложение [web.1]: [2014-11-25 14:43:27] request.CRITICAL: необработанное исключение PHP InvalidArgumentException: «Файл» / tmp / build_23552b1c8333d8e8b9b475444451531c / app / config / routing.yml «не существует». в /app/app/cache/prod/classes.php строка 1575 {«исключение»: «[объект] (InvalidArgumentException: файл \» / tmp / build_23552b1c8333d8e8b9b475444451531c / app / config / routing.yml \ «не существует. в /app/app/cache/prod/classes.php:1575) «} [] 2014-11-25T14: 43: 27.390315 + 00: 00 приложение [web.1]: [25-ноя-2014 14:43:27 UTC] Неустранимая ошибка PHP: необработанное исключение «InvalidArgumentException» с сообщением «Файл» / tmp /build_23552b1c8333d8e8b9b475444451531c/app/config/routing.yml «не существует.» в /app/app/cache/prod/classes.php:1575
2014-11-25T14: 43: 27.390355 + 00: 00 приложение [web.1]: трассировка стека:
2014-11-25T14: 43: 27.390525 + 00: 00 приложение [web.1]: # 0 /app/app/cache/prod/classes.php(2301): Symfony \ Component \ Config \ FileLocator-> locate (‘ / tmp / build_2355 … ‘, NULL, true)
2014-11-25T14: 43: 27.390779 + 00: 00 приложение [веб.1]: # 1 /app/vendor/symfony/symfony/src/Symfony/Component/Routing/Loader/YamlFileLoader.php(49): Symfony \ Компонент \ HttpKernel \ Config \ FileLocator-> найти ( ‘/ TMP / build_2355 …’)
2014-11-25T14: 43: 27.391220 + 00: 00 приложение [web.1]: # 3 /app/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Routing/DelegatingLoader.php(58): Symfony \ Компонент \ Config \ Loader \ DelegatingLoader-> load (‘/ tmp / build_2355 …’, NULL)
2014-11-25T14: 43: 27.391369 + 00: 00 приложение [web.1]: # 4 /app/app/cache/prod/classes.php(1502): Symfony \ Bundle \ FrameworkBundle \ Routing \ DelegatingLoader-> load (‘/ tmp / build_2355 …’, NULL)
2014-11-25T14: 43: 27.391484 + 00: 00 приложение [web.1]: # 5 /app/app/cache/prod/classes.php (в /app/app/cache/prod/classes.php он-лайн 1575
2014-11-25T14: 43: 27.391759 + 00: 00 app [web.1]: 10.36.138.222 — — [25 / Nov / 2014: 14: 43: 27 +0000] «GET /css/bootstrap.css HTTP / 1.1 «500 -» — «» Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 38.0.2125.122 Safari / 537.36 «2014-11-25T14: 43: 27.389956 + 00: 00 app [web.1]: [2014-11-25 14:43:27] request.CRITICAL: При обработке исключения генерируется исключение (Twig_Error_Loader: «/ tmp / build_23552b1c8333d8e8b9b475444451531c / vendor / symfony / symfony / src / Symfony Каталог Bundle / FrameworkBundle / Resources / views «не существует.) {» Исключение «:» [объект] (InvalidArgumentException: файл \ «/ tmp / build_23552b1c8333d8e8b9b475444451531c / app / config / routing.yml \» не существует. В / app / app / cache / prod / classes.php: 1575) «} [] 2014-11-25T14: 43: 27.390994 + 00: 00 приложение [web.1]: # 2 /app/vendor/symfony/symfony/src/Symfony/Component/Config/Loader/DelegatingLoader.php(45): Symfony \ Компонент \ Routing \ Loader \ YamlFileLoader-> load (‘/ tmp / build_2355 …’, NULL)

2

Решение

Я думаю, что проблема заключается в том, что в производственной среде используется кэшированная версия «% kernel.root_dir%».

Heroku собирает слаг в каталоге, подобном «/ tmp / build …», но запускает его в каталоге / app.

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

Я изменил свой app / AppKernel.php, добавив этот метод:

public function getRootDir()
{
if (isset($_ENV['SYMFONY_ENV']) && $_ENV['SYMFONY_ENV'] == 'prod') {
// Workaround to avoid problem with the slug of heroku
return '/app/app';
}
return parent::getRootDir();
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]