Как запустить (или запустить) Composer на Openshift?

Я пытаюсь создать приложение Skeleton ZendFramework в Openshift. Я создал приложение PHP5, используя эти инструкции, и клонировал его локально. Я клонировал приложение скелета ZendFramework в репозитории, а затем запустил Composer для установки зависимостей локально.

Затем я нажал мой репозиторий на Openshift, но я получил следующее сообщение об ошибке:

Fatal error: Uncaught exception 'RuntimeException' with message 'Unable to load ZF2. Run `php composer.phar install` or define a ZF2_PATH environment variable.' in /var/lib/openshift/559d4d8f500446844700002b/app- root/runtime/repo/init_autoloader.php:51 Stack trace: #0 /var/lib/openshift/559d4d8f500446844700002b/app- root/runtime/repo/public/index.php(18): require() #1 {main} thrown in /var/lib/openshift/559d4d8f500446844700002b/app- root/runtime/repo/init_autoloader.php on line 51 

что свидетельствует о том, что мне нужно запустить Composer on Openshift. Как мне это достичь?

В моем локальном репозитории каталог /vendor заполняется каталогами зависимостей. Тем не менее, /vendor игнорируется в commit. Я мог бы попытаться совершить и подтолкнуть его, но это правильный путь? Это не выглядит чистым.

Solutions Collecting From Web of "Как запустить (или запустить) Composer на Openshift?"

В принципе, вам необходимо выполнить composer install с каждой строкой автоматически на OpenShift.

Вы можете сделать это, добавив файл-маркер с именем use_composer в папку .openshift/markers .

.openshift/markers/use_composer

Ссылка: https://developers.openshift.com/ru/php-markers.html


Если вам нужно сделать больше, чем просто composer install , например, установить Composer, использование action_hooks – лучший выбор. Они позволяют работать с скриптами bash.

См. https://developers.openshift.com/en/managing-action-hooks.html.

.openshift/action_hooks/build :

 #!/bin/bash export COMPOSER_HOME="$OPENSHIFT_DATA_DIR/.composer" if [ ! -f "$OPENSHIFT_DATA_DIR/composer.phar" ]; then curl -s https://getcomposer.org/installer | php -- --install-dir=$OPENSHIFT_DATA_DIR else php $OPENSHIFT_DATA_DIR/composer.phar self-update fi ( unset GIT_DIR ; cd $OPENSHIFT_REPO_DIR ; php $OPENSHIFT_DATA_DIR/composer.phar install ) 

Наилучший способ установки зависимостей – это действие, связанное с действием, то есть сценарий, выполняемый картриджем во время развертывания. Я бы использовал крюк deploy :

 #!/bin/bash # @file # .openshift/action_hooks/deploy COMPOSER_DIR="$OPENSHIFT_DATA_DIR/bin" function install_composer() { echo 'Installing Composer' if [ ! -d "$COMPOSER_DIR" ] then mkdir -p $COMPOSER_DIR fi curl -s https://getcomposer.org/installer | php -- --install-dir=$COMPOSER_DIR } if [ ! -x "$COMPOSER_DIR/composer" ] then install_composer fi $COMPOSER_DIR/composer self-update cd $OPENSHIFT_REPO_DIR $COMPOSER_DIR/composer install 

Также не забудьте сделать этот скрипт исполняемым: chmod +x .openshift/action_hooks/deploy .