X

Magento 2: Ошибка Call to undefined function xdebug_disable()

Для одного из проектов потребовалось воспроизвести проблему на чистой мадженте 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();
    }
}

Именно это решение я и использовал.

Категории: Magento
Тэги: magentophpxdebug