phpxdebugpeclphp-internals

What's the difference between "extension" and "zend_extension" in php.ini?


When I installed Xdebug through pecl, it added the following line to my php.ini file.

extension="xdebug.so"

and everything I used worked. Until today.

Today I was having trouble setting up Xdebug for interactive debugging. I couldn't get anything working until I changed the above to

zend_extension="/usr/local/lib/php/extensions/xdebug.so"

(Caveat: I think this is what got me working, but I'm not 100% sure)

This raised the question in my mind. What's the difference in loading an extension via extension= vs. zend_extension?


Solution

  • At the core of the PHP language (more like the interpreter, because a language is just a specification) is a software (interpreter, bytecode compiler) called "Zend Engine" developed by Zend.

    Every module which messes with this core should be installed as a "zend_extension".

    And yet, to solve your problem, ignore this attempt at explanation and consult the docs of the extension you're configuring - http://www.xdebug.org/docs/install.