Xdebug загружается, но не загружается как расширение zend. Что это значит? Как решить эту проблему?
Эта ошибка означает, что вы использовали «extension =» для загрузки Xdebug. Это может быть в вашем обычном php.ini или в файле с именем xdebug.ini, который некоторые дистрибутивы любят добавлять. В любом случае Xdebug необходимо загружать как расширение Zend для некоторых функций, таких как одношаговая отладка. Поскольку Xdebug не предназначен для работы как нормальное расширение, он может также сработать и сжечь.
Синтаксис загрузки Xdebug в качестве расширения Zend зависит от версии PHP и сборки. Я предлагаю вам использовать http://xdebug.org/wizard.php, чтобы предоставить вам правильные строки.
Убедитесь, что он настроен на правильную загрузку в качестве zend_extension
. Внутри php.ini
добавьте эту строку
zend_extension="/usr/local/php/modules/xdebug.so"
Если вы хотите активировать zend*nts*.dll
в файл php.ini
на серверах Windows, вы должны использовать директиву zend_extension_ts
вместо zend_extension
Пример загрузки xdebug:
[XDeug] zend_extension_ts="DRIVE:/PATH_TO_XDEBUG/php_xdebug.dll" xdebug.show_local_vars=1 xdebug.default_enable=On
Примечание: двойные кавычки в ваш DLL-файл
Надеюсь, что это поможет кому-то 🙂
Другие уже объяснили, что ошибка связана с тем, что Xdebug загружается как обычный PHP-модуль вместо расширения Zend. Вы можете использовать мастер, с которым связан Derick или вручную введите строку, как показал Starx.
Однако есть проблема, с которой вы можете столкнуться. Директива extensions_dir
в php.ini
настоящее время применима только к PHP-модулям, а не к расширениям Zend . Поэтому вы не можете использовать общую конфигурацию, например:
[PHP] extension_dir = .\ext extension = php_memcache.dll … [zend] zend_extension = php_xdebug-2.2.3-5.3-vc9-nts.dll
Хотя PHP будет правильно загружать php_memcache.dll
из php_memcache.dll
ext
, он не будет загружать php_xdebug-2.2.3-5.3-vc9-nts.dll
и выкинет ошибку. Failed loading php_xdebug-2.2.3-5.3-vc9-nts.dll
.
Чтобы исправить это, вам нужно будет либо использовать полный / абсолютный путь, например:
zend_extension = C:\foobar\PHP\ext\php_xdebug-2.2.3-5.3-vc9-nts.dll
или относительный путь, такой как:
zend_extension = ext\php_xdebug-2.2.3-5.3-vc9-nts.dll zend_extension = ..\phpexts\php_xdebug-2.2.3-5.3-vc9-nts.dll zend_extension = \dev\phpexts\php_xdebug-2.2.3-5.3-vc9-nts.dll
(Мастер вернет zend_extension=.\ext\php_xdebug-2.2.3-5.3-vc9-nts.dll
который включает в себя каталог, но также и лишний .\
)