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

pecl, php, php-internals, xdebug

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.

Problem

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`?

Original source