Magento 2: Ошибка Call to undefined function xdebug_disable()
Для одного из проектов потребовалось воспроизвести проблему на чистой мадженте 2.3.3. После стандартной распаковки архива и попытки установить получил ошибку: Fatal error: Uncaught Error: Call to undefined function xdebug_disable() . Немного погуглив нашел информацию о том, что проблема связана с обновлением xdebug-а на версию 3..
Полный текст ошибки
1 2 3 4 5 6 7 8 9 10 11 |
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 на предыдущую, вторую версию
1 2 3 4 |
sudo apt-get install php7.4-dev sudo pecl install -f xdebug-2.9.8 |
Способ так себе, особенно если для остальных проектов используется XDebug 3
Способ 2. Удалить модуль "Magento\FunctionalTestingFramework"
1 2 3 |
composer remove --dev magento/magento2-functional-testing-framework |
Пойдет как быстрое решение, если данный модуль не нужен
Способ 3. Добавить дополнительные условия в модуль "Magento\FunctionalTestingFramework"
Открываем в редакторе
1 2 3 |
vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/_bootstrap.php |
Ищем в самом конце
1 2 3 4 5 6 7 |
// add the debug flag here $debugMode = $_ENV['MFTF_DEBUG'] ?? false; if (!(bool)$debugMode && extension_loaded('xdebug')) { xdebug_disable(); } |
И добавляем проверку на существование используемой функции, вот так
1 2 3 4 5 6 7 8 9 |
// add the debug flag here $debugMode = $_ENV['MFTF_DEBUG'] ?? false; if (!(bool)$debugMode && extension_loaded('xdebug')) { if (function_exists('xdebug_disable')) { xdebug_disable(); } } |
Именно это решение я и использовал.
Author: | Tags: /
| Rating:
Leave a Reply