Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does "XDEBUG NOT LOADED AS ZEND EXTENSION" warning means?

Tags:

php

xdebug

Xdebug is loaded, but not loaded as a zend extension. What does it mean? How to resolve this problem?

like image 713
lovespring Avatar asked Apr 06 '12 07:04

lovespring


People also ask

What is Zend extension?

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.


4 Answers

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.

like image 103
Derick Avatar answered Oct 06 '22 09:10

Derick


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"
like image 35
Starx Avatar answered Oct 06 '22 11:10

Starx


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 .\)

like image 21
Synetech Avatar answered Oct 06 '22 09:10

Synetech


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 :)

like image 3
Halayem Anis Avatar answered Oct 06 '22 11:10

Halayem Anis