В настоящее время мы сталкиваемся с проблемой расширения helhum / typo3-console , которую мы не можем выяснить.
Мы пытаемся настроить рабочий процесс для нашего Разработки TYPO3 с использованием Microsoft TFS (Azure DevOps - В помещении ) с агентом сборки, установленным на компьютере Debian ( Debian GNU / Linux 9.12 - PHP 7.0.33 ). Однако по некоторым причинам наши системные администраторы решили использовать DEB.SURY (https://deb.sury.org/) для управления несколькими версиями PHP на одном компьютере. , Сборочный конвейер, над которым мы работаем, предназначен для установки TYPO3 9.5 с использованием PHP 7.3 .
Мы заметили следующее: потому что (или, по крайней мере, кажется) файл ". / vendor / helhum / typo3-console / typo3cms " содержит shebang #!/usr/bin/env php
, он всегда выдает ошибку, когда мы запускаем команду типа typo3cms install:generatepackagestates
, потому что она использует версию PHP доставлено ОС, а не той, которую мы указали. Итак, если мы сделаем что-то вроде этого:
php7.3 typo3cms install:generatepackagestates
... будет выдано сообщение об ошибке, потому что оно не будет использовать PHP 7.3 , но PHP 7.0 .33 .
Итак, мы создали копию файла, поместили ее в root нашего каталога и удалили первую строку. В этом файле мы также изменили строку, вызывающую typo3-console. php file by require __DIR__ . '/vendor/helhum/typo3-console/Scripts/typo3-console.php';
.
Мы также на лету установили следующие вещи в нашей среде сборки:
export TYPO3_PATH_ROOT="./public"
export TYPO3_PATH_WEB="./public"
Теперь можно сделать что-то подобное в нашем конвейере сборки:
php7.3 ./typo3cms-custom.php install:generatepackagestates
Это почти великолепно! Однако теперь мы сталкиваемся со следующей ошибкой:
PHP Warning: require(/opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Classes/Console/Mvc/Cli/../../../../Configuration/ComposerPackagesCommands.php): failed to open stream: No such file or directory in /opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Classes/Console/Mvc/Cli/CommandConfiguration.php on line 169
PHP Fatal error: require(): Failed opening required '/opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Classes/Console/Mvc/Cli/../../../../Configuration/ComposerPackagesCommands.php' (include_path='/opt/vstsagent/_work/5/s/vendor/nimut/testing-framework/.Build/vendor/pear/http_request2:/opt/vstsagent/_work/5/s/vendor/nimut/testing-framework/.Build/vendor/pear/net_url2:.:/usr/share/php') in /opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Classes/Console/Mvc/Cli/CommandConfiguration.php on line 169
Мы часами пытались понять, почему, но, честно говоря, мы не можем понять это. Может ли кто-нибудь дать нам небольшую помощь по этому поводу или просто небольшой намек? Это будет высоко ценится. Кто-нибудь сталкивался с такой проблемой или поведением?
Заранее большое спасибо.
С уважением,
РЕДАКТИРОВАТЬ 1
Мы заметил, что файл Configuration / ComposerPackagesCommands. php, созданный с помощью PopulateCommandConfiguration. php, отсутствует в каталоге вендора на нашей машине сборки.
Нам удалось восстановить отсутствующий файл Configuration / ComposerPackagesCommands. php, однако мы не получаем других ошибок.
Если мы запускаем install: generatepackagestates
[ RuntimeException ]
Cannot set an alias map as the alias loader is not registered!
Exception code: 1439228111
Exception trace:
#0 ()
/opt/vstsagent/_work/5/s/vendor/typo3/class-alias-loader/src/ClassAliasMap.php:60
#1 TYPO3\ClassAliasLoader\ClassAliasMap::addAliasMap()
typo3/sysext/core/Classes/Core/ClassLoadingInformation.php:160
#2 TYPO3\CMS\Core\Core\ClassLoadingInformation::registerTransientClassLoadingInformationForPackage()
typo3/sysext/core/Classes/Package/PackageManager.php:636
#3 TYPO3\CMS\Core\Package\PackageManager->registerTransientClassLoadingInformationForPackage()
typo3/sysext/core/Classes/Package/PackageManager.php:600
#4 TYPO3\CMS\Core\Package\PackageManager->activatePackage()
/opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Classes/Console/Install/PackageStatesGenerator.php:60
#5 Helhum\Typo3Console\Install\PackageStatesGenerator->generate()
/opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Classes/Console/Command/Install/InstallGeneratePackageStatesCommand.php:124
#6 Helhum\Typo3Console\Command\Install\InstallGeneratePackageStatesCommand->execute()
/opt/vstsagent/_work/5/s/vendor/symfony/console/Command/Command.php:255
#7 Symfony\Component\Console\Command\Command->run()
/opt/vstsagent/_work/5/s/vendor/symfony/console/Application.php:1001
#8 Symfony\Component\Console\Application->doRunCommand()
/opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Classes/Console/Mvc/Cli/Symfony/Application.php:169
#9 Helhum\Typo3Console\Mvc\Cli\Symfony\Application->doRunCommand()
/opt/vstsagent/_work/5/s/vendor/symfony/console/Application.php:271
#10 Symfony\Component\Console\Application->doRun()
/opt/vstsagent/_work/5/s/vendor/symfony/console/Application.php:147
#11 Symfony\Component\Console\Application->run()
/opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Classes/Console/Core/Kernel.php:148
#12 Helhum\Typo3Console\Core\Kernel->handle()
/opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Scripts/typo3-console.php:16
#13 {closure}()
/opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Scripts/typo3-console.php:18
#14 require()
/opt/vstsagent/_work/5/s/typo3cms-custom.php:17
Если мы запустим install: fixfolderstructure
[ TYPO3\CMS\Install\FolderStructure\Exception\InvalidArgumentException ]
Root node expects absolute path as name
Exception code: 1366141329
Exception trace:
#0 ()
typo3/sysext/install/Classes/FolderStructure/RootNode.php:46
#1 TYPO3\CMS\Install\FolderStructure\RootNode->__construct()
/opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Classes/Console/Install/FolderStructure/ExtensionFactory.php:59
#2 Helhum\Typo3Console\Install\FolderStructure\ExtensionFactory->getStructure()
/opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Classes/Console/Command/Install/InstallFixFolderStructureCommand.php:77
#3 Helhum\Typo3Console\Command\Install\InstallFixFolderStructureCommand->execute()
/opt/vstsagent/_work/5/s/vendor/symfony/console/Command/Command.php:255
#4 Symfony\Component\Console\Command\Command->run()
/opt/vstsagent/_work/5/s/vendor/symfony/console/Application.php:1001
#5 Symfony\Component\Console\Application->doRunCommand()
/opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Classes/Console/Mvc/Cli/Symfony/Application.php:169
#6 Helhum\Typo3Console\Mvc\Cli\Symfony\Application->doRunCommand()
/opt/vstsagent/_work/5/s/vendor/symfony/console/Application.php:271
#7 Symfony\Component\Console\Application->doRun()
/opt/vstsagent/_work/5/s/vendor/symfony/console/Application.php:147
#8 Symfony\Component\Console\Application->run()
/opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Classes/Console/Core/Kernel.php:148
#9 Helhum\Typo3Console\Core\Kernel->handle()
/opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Scripts/typo3-console.php:16
#10 {closure}()
/opt/vstsagent/_work/5/s/vendor/helhum/typo3-console/Scripts/typo3-console.php:18
#11 require()
/opt/vstsagent/_work/5/s/typo3cms-custom.php:17
Как мы понимаем, проблема заключается в различных сценариях, которые необходимо выполнить до конца sh TYPO3 установка (или обновление), потому что, даже если мы укажем выполнение команд с указанной c версией PHP, в какой-то момент версия будет доставлена ОС используется. На данный момент кажется, что наши различные обходные пути работают не очень хорошо.
РЕДАКТИРОВАТЬ 2
Мы также безуспешно пробовали следующие вещи:
export PATH=/usr/bin/php7.3:$PATH
php typo3cms install:generatepackagestates
# FAILURE
alias php='/usr/bin/php7.3'
php typo3cms install:generatepackagestates
# FAILURE
alias php=php7.3
php typo3cms install:generatepackagestates
# FAILURE
set PATH="/usr/bin/php7.3:$PATH"
php typo3cms install:generatepackagestates
# FAILURE
env PATH="/usr/bin/php7.3:$PATH" php typo3cms install:generatepackagestates
# FAILURE
К сожалению, он не использует указанную нами версию PHP. Что интересно, мы можем сделать следующее прямо на сборочной машине:
$ alias php=php7.3
$ alias
alias php='php7.3'
$ php -v
PHP 7.3...
Однако это не даст того же результата, если мы сделаем то же самое в конвейере сборки. У нас есть:
$ alias php=php7.3
$ alias
alias php='php7.3'
$ php -v
PHP 7.0.33...
РЕДАКТИРОВАТЬ 3 (и решение?)
Через несколько часов нам наконец-то удалось заставить вещи работать (кажется) так:
$ shopt -s expand_aliases
$ alias php=php7.3
alias php='php7.3'
$ php -v
PHP 7.3...
$ php ./typo3cms-custom.php install:fixfolderstructure
$ php ./typo3cms-custom.php install:generatepackagestates
$ php ./typo3cms-custom.php cache:flush --files-only
$ php ./composer.phar dump-autoload -o --no-scripts
Точно так же скрипты TYPO3 работают и не выдают никаких ошибок. Однако, когда мы делаем composer install
предыдущим шагом, мы должны позволить установке после сценариев не получить файл Configuration / ComposerPackagesCommands. php, в противном случае последний отсутствует. Это не совсем чисто, но у нас пока нет лучшего решения.
Если у кого-то есть лучшее предложение ...