Развертывание Symfony2 в Bluemix

Мы пытаемся развернуть приложение symfony2 в bluemix, но безуспешно … Мы видели несколько сообщений об этой проблеме, но они либо без ответа, либо устарели, либо имеют немного другую проблему.

У нас есть приложение Symfony, основанное на стандартном выпуске Symfony, помещенное в бэкенд папка, потому что у нас также есть интерфейс.
Однако composer.json находится в корневом каталоге и ссылается на внутреннюю папку. Это единственное изменение сделано.

Все отлично работает локально, но не в Bluemix с пакетом сборки PHP, вот ошибка:

Generating autoload files

[RuntimeException]
Could not scan for classes inside "backend/app/AppKernel.php" which does not appear to be a file nor a folder

В Bluemix env настроен на продвижение через manifest.yml, и мы попробовали установить композитор в той же конфигурации локально:

 applications:
- name: myapp
random-route: true
memory: 128M
env:
SYMFONY_ENV: prod
#BP_DEBUG: true

Это ошибка, которую я получаю с подробным режимом, и у меня точно так же без подробного режима. Мы работаем в режиме no-dev на Bluemix, вот полный options.json:

{
"COMPOSER_INSTALL_OPTIONS": [ "--no-dev", "-vvv"]
}

Я попытался добавить сценарии для отладки. Он хорошо работает локально, но не в Bluemix, так что это совсем не помогает. Извлечь из composer.json:

"scripts": {
"pre-autoload-dump": [
"echo TEST"],
...
}

Файл существует и находится в нужном месте:

   $ ll backend/app/
total 128
drwxr-xr-x 6 bob bob  4096 févr. 28 15:45 .
drwxr-xr-x 9 bob bob  4096 févr. 28 15:44 ..
-rwxr-xr-x 1 bob bob   101 févr. 23 11:37 AppCache.php
-rwxr-xr-x 1 bob bob  1394 févr. 24 11:32 AppKernel.php
-rwxr-xr-x 1 bob bob   263 févr. 23 11:37 autoload.php
-rw-r--r-- 1 bob bob 40956 févr. 28 15:45 bootstrap.php.cache
drwxr-xr-x 3 bob bob  4096 févr. 28 15:45 cache
-rwxr-xr-x 1 bob bob  3909 févr. 28 15:45 check.php
drwxr-xr-x 2 bob bob  4096 févr. 28 14:37 config
-rwxr-xr-x 1 bob bob   897 févr. 22 15:28 console
-rwxr-xr-x 1 bob bob   143 févr. 23 11:37 .htaccess
drwxr-xr-x 2 bob bob  4096 févr. 28 14:37 logs
-rwxr-xr-x 1 bob bob  1358 févr. 23 11:37 phpunit.xml.dist
drwxr-xr-x 3 bob bob  4096 févr. 23 11:37 Resources
-rwxr-xr-x 1 bob bob 34272 févr. 28 15:45 SymfonyRequirements.php

Это кажется как конфигурация правильная (ищет правильное место) в composer.json. Этот же файл используется локально без каких-либо проблем:

"extra": {
"symfony-app-dir": "backend/app",
"symfony-web-dir": "backend/web",
...
}

Последнее, что я имею в виду, это то, что я сделал см удалить myapp прежде чем делать новый ср толчок просто чтобы убедиться, что в Bluemix учитываются последние файлы (потому что я не понимаю, почему сценарии pre-autoload-dump не запускаются в Bluemix)

Спасибо за помощь!

1

Решение

Я нашел проблему.

Сначала я нашел это, сделав это:

Я добавил опцию no-script и no-autoloader в composer, чтобы убедиться, что контейнер запустится, и я смог подключиться к нему, чтобы увидеть файловую систему. Без этого контейнер разрушен, и невозможно узнать, что произошло.

"COMPOSER_INSTALL_OPTIONS_DEBUG": [ "--no-dev", "-vvv", "--no-autoloader", "--no-scripts"]

Затем я подключился к контейнеру с помощью ssh (только с Диего):

cf enable-ssh
cf ssh

Затем, глядя на файловую систему, я обнаружил, что бэкенд а также внешний интерфейс папки помещаются в HTDOCS папка.

Я изменил свой composer.json на ссылку HTDOCS / бэкенд / вместо просто бэкенд / и все работает отлично. Образец из composer.json файл:

    "autoload": {
"psr-4": { "": "htdocs/backend/src/" },
"classmap": [ "htdocs/backend/app/AppKernel.php", "htdocs/backend/app/AppCache.php" ]
},

Проблема в том, что у меня другое поведение в локальной среде (все в ./) и контейнер (все в HTDOCS /), а composer.json, не поддерживающий переменные среды, усложняет использование только одного файла. Но это другая история.

2

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

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