run medium espaƱol dockerize compose app php laravel symfony docker composer-php

php - medium - Composer utiliza su propia ruta Symfony en la ventana acoplable(carga de archivos antiguos)



laravel medium docker (3)

Creo que el comando de actualización composer self-update del compositor también actualiza la firma del compositor. También sugeriría que intente lo siguiente si tiene acceso ssh al servidor:

  • Quitar composer.lock .
  • Eliminar la carpeta del vendor .
  • Ejecutar composer install

Esto debería solucionar todos los problemas que mencionaste.

  • Estoy usando ventana acoplable.
  • El comando de actualización posterior (clase php) se ejecuta después de la actualización del editor.
  • Estaba funcionando bien hasta que realicé la actualización 5.4-> 5.5 de Laravel que descargó nuevos paquetes de Symfony
  • compositor claro caché no ayudó
  • la auto actualización del compositor no ayudó
  • las firmas del compositor son iguales

[Symfony / Component / Debug / Exception / FatalThrowableError] Llamada a un método no definido Illuminate / Foundation / Console / ClosureCommand :: setHidden ()

¡Estaba atacando los archivos y este método existe en la clase padre! Puse esta pequeña cosa en el constructor lo que está pasando:

use Symfony/Component/Console/Command/Command as SymfonyCommand; class Command extends SymfonyCommand { public function __construct() { $r1 = new /ReflectionClass($this); $r2 = new /ReflectionClass(SymfonyCommand::class); var_dump([$r1->getFileName(), $r2->getFileName()]); } // rest of class }

Resultado: el compositor carga automáticamente, Command.php más antiguo en lugar de esto desde el proyecto.

array(2) { [0]=> string(91) "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/ClosureCommand.php" [1]=> string(67) "phar:///usr/bin/composer/vendor/symfony/console/Command/Command.php" }

Me gustaría saber por qué la clase Symfony no se carga desde el proyecto sino desde algún lugar mágico y cómo puedo solucionarlo.

Información adicional:

Dockerfile para php que agrega compositor:

# Composer ENV PATH "/composer/vendor/bin:$PATH" ENV COMPOSER_ALLOW_SUPERUSER 1 ENV COMPOSER_HOME /composer ENV COMPOSER_VERSION 1.4.2 RUN curl -s -f -L -o /tmp/composer-setup.php https://getcomposer.org/installer RUN curl -s -f -L -o /tmp/composer-setup.sig https://composer.github.io/installer.sig RUN php -r " / /$signature_php = hash(''SHA384'', file_get_contents(''/tmp/composer-setup.php'')); / /$signature_sig = trim(file_get_contents(''/tmp/composer-setup.sig'')); / echo '' SIGNATURE PHP: ['' . /$signature_php . /"]//n/"; / echo '' SIGNATURE SIG: ['' . /$signature_sig . /"]//n/"; / if (/$signature_php !== /$signature_sig) { / unlink(''/tmp/composer-setup.php''); / echo ''Integrity check failed, installer is either corrupt or worse.'' . PHP_EOL; / exit(1); / }" RUN php /tmp/composer-setup.php --no-ansi --install-dir=/usr/bin cd --filename=composer --version=${COMPOSER_VERSION} / && rm /tmp/composer-setup.php / && composer --ansi --version --no-interaction

Parte del compositor:

"post-update-cmd": [ "Modules//Core//Composer//ComposerScripts::postUpdate", "php artisan vendor:publish --tag=public --force", "php artisan optimize" ],


Tal vez la firma para obtener el compositor no coincida, debe saber que la firma puede cambiar; si desea obtener la última, use esta URL https://composer.github.io/installer.sig

Utilice este fragmento para verificar la firma.

php -r "copy(''https://getcomposer.org/installer'', ''composer-setup.php'');" && / php -r "if (hash_file(''SHA384'', ''composer-setup.php'') === ''$(wget -q -O - https://composer.github.io/installer.sig)'') { / echo ''Installer good''; / } else { / echo ''Installer corrupt''; die; / } echo PHP_EOL;"


así es como instalo el compositor (Alpine, php7.1-fpm, auto compilado nginx)

EXPECTED_COMPOSER_SIGNATURE=$(wget -q -O - https://composer.github.io/installer.sig) && / php -r "copy(''https://getcomposer.org/installer'', ''composer-setup.php'');" && / php -r "if (hash_file(''SHA384'', ''composer-setup.php'') === ''${EXPECTED_COMPOSER_SIGNATURE}'') { echo ''Composer.phar Installer verified''; } else { echo ''Composer.phar Installer corrupt''; unlink(''composer-setup.php''); } echo PHP_EOL;" && / php composer-setup.php --install-dir=/usr/bin --filename=composer && / php -r "unlink(''composer-setup.php'');"

e intente cambiar su postinstalación a esto (laravel 5.5, acoplado y funcionando sin problemas)

"post-update-cmd": [ "Illuminate//Foundation//ComposerScripts::postUpdate", "php artisan optimize" .....