Для одного из проектов потребовалось воспроизвести проблему на чистой мадженте 2.3.3. После стандартной распаковки архива и попытки установить получил ошибку: Fatal error: Uncaught Error: Call to undefined function xdebug_disable() . Немного погуглив нашел информацию о том, что проблема связана с обновлением xdebug-а на версию 3..
Полный текст ошибки
Fatal error: Uncaught Error: Call to undefined function xdebug_disable() in /public_html/vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/_bootstrap.php:73 Stack trace: #0 /public_html/vendor/composer/autoload_real.php(70): require() #1 /public_html/vendor/composer/autoload_real.php(60): composerRequirefc2ab6e5626660e79799aa3811dd94ea('eda65932675b68b...', '/work/progr/web...') #2 /public_html/vendor/autoload.php(7): ComposerAutoloaderInitfc2ab6e5626660e79799aa3811dd94ea::getLoader() #3 /public_html/app/autoload.php(30): include('/work/progr/web...') #4 /public_html/app/bootstrap.php(33): require_once('/work/progr/web...') #5 /public_html/setup/index.php(15): require('/work/progr/web...') #6 {main} thrown in /public_html/vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/_bootstrap.php on line 73
Решить проблему можно несколькими способами
Способ 1. Откатить XDebug на предыдущую, вторую версию
sudo apt-get install php7.4-dev sudo pecl install -f xdebug-2.9.8
Способ так себе, особенно если для остальных проектов используется XDebug 3
Способ 2. Удалить модуль "Magento\FunctionalTestingFramework"
composer remove --dev magento/magento2-functional-testing-framework
Пойдет как быстрое решение, если данный модуль не нужен
Способ 3. Добавить дополнительные условия в модуль "Magento\FunctionalTestingFramework"
Открываем в редакторе
vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/_bootstrap.php
Ищем в самом конце
// add the debug flag here $debugMode = $_ENV['MFTF_DEBUG'] ?? false; if (!(bool)$debugMode && extension_loaded('xdebug')) { xdebug_disable(); }
И добавляем проверку на существование используемой функции, вот так
// add the debug flag here $debugMode = $_ENV['MFTF_DEBUG'] ?? false; if (!(bool)$debugMode && extension_loaded('xdebug')) { if (function_exists('xdebug_disable')) { xdebug_disable(); } }
Именно это решение я и использовал.