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"
.....