Мы пытаемся развернуть приложение 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)
Спасибо за помощь!
Я нашел проблему.
Сначала я нашел это, сделав это:
Я добавил опцию 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, не поддерживающий переменные среды, усложняет использование только одного файла. Но это другая история.
Других решений пока нет …