Xdebug is loaded, but not loaded as a zend extension. What does it mean? How to resolve this problem?
A Zend extension hooks into "lower levels" of the language. A single extension can be both a PHP extension AND a Zend extension as well. Xdebug is both, for example, using the Zend extension component to hook into lower layers of the language to intercept calls for debugging.
This error means that you used "extension=" to load Xdebug. That could be in your normal php.ini, or in a file called xdebug.ini that some distributions like to add. In any case, Xdebug needs to be loaded as a Zend extension for certain features such as single step debugging. As Xdebug is not meant to work as a normal extension, it might crash and burn too.
The syntax for loading Xdebug as Zend extension depends on PHP version and build. I would suggest you use http://xdebug.org/wizard.php to provide you with the correct lines.
Make sure if it is configured to load correctly as a zend_extension
. Inside php.ini
add this line
zend_extension="/usr/local/php/modules/xdebug.so"
Others have already explained that the error is because Xdebug is being loaded as a regular PHP module instead of as a Zend extension. You can use the wizard that Derick linked to or manually enter the line as Starx showed.
However, there is an issue that you may run into. The extensions_dir
directive in php.ini
currently only applies to PHP modules, not to Zend extensions. Therefore, you cannot use a common configuration like this:
[PHP]
extension_dir = .\ext
extension = php_memcache.dll
…
[zend]
zend_extension = php_xdebug-2.2.3-5.3-vc9-nts.dll
While PHP will correctly load php_memcache.dll
from the ext
sub-directory, it will not load php_xdebug-2.2.3-5.3-vc9-nts.dll
and will throw the error Failed loading php_xdebug-2.2.3-5.3-vc9-nts.dll
.
To fix this, you will need to either use an fully-qualified/absolute path such as:
zend_extension = C:\foobar\PHP\ext\php_xdebug-2.2.3-5.3-vc9-nts.dll
or a relative path such as these:
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
(The wizard will return zend_extension=.\ext\php_xdebug-2.2.3-5.3-vc9-nts.dll
which includes the directory but also a superfluous .\
)
If you want to activate zend*nts*.dll
into you php.ini
file on Windows servers, you must use zend_extension_ts
directive instead of zend_extension
Example to load xdebug :
[XDeug]
zend_extension_ts="DRIVE:/PATH_TO_XDEBUG/php_xdebug.dll"
xdebug.show_local_vars=1
xdebug.default_enable=On
Note : the double quotes to your dll file
Hope that will helps someone :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With