php zend-framework2 composer-php openshift

php - ¿Cómo ejecutar(o debo ejecutar) Composer en Openshift?



zend-framework2 composer-php (2)

Básicamente, necesita ejecutar la composer install con cada compilación automáticamente en OpenShift.

Puede hacer esto agregando un archivo marcador llamado use_composer en la carpeta .openshift/markers .

.openshift/markers/use_composer

Referenciando: https://developers.openshift.com/en/php-markers.html

Si necesita hacer algo más que composer install , como instalar Composer, usar action_hooks es la mejor opción. Permiten trabajar con scripts bash.

Ver, 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 )

Estoy intentando crear la aplicación Skeleton de ZendFramework en Openshift. Creé una aplicación PHP5 usando estas instrucciones y la cloné localmente. Cloné la aplicación del esqueleto ZendFramework en el repositorio, luego ejecuté Composer para instalar dependencias localmente.

Luego empujé mi repositorio a Openshift, pero aparece el siguiente mensaje de error:

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

lo cual es indicativo de que necesito ejecutar Composer en Openshift. ¿Cómo logro esto?

En mi repositorio local, el directorio /vendor está lleno de directorios de dependencia. Sin embargo, /vendor se ignora en la confirmación. Podría intentar comprometerlo y presionarlo, pero ¿es esta la manera correcta de proceder? No se ve limpio.


La mejor forma de instalar dependencias es desde un gancho de acción, es decir, un script ejecutado por el cartucho durante la implementación. Yo usaría el gancho 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

También recuerde hacer este script ejecutable: chmod +x .openshift/action_hooks/deploy .