PHP – Extensions – no-debug-non-zts-xxxxxxxx

PHPphp.ini

I am compiling php extensions (memcached and xdebug), and when I run make install, they keep getting installed into /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626. So a few questions:

  1. What does no-debug-non-zts-20090626 even mean, and why is it the default?

  2. Is it good practice to edit the php.ini file and set the extension_dir directive to the aforementioned directory? Or should I compile each module with a PREFIX=/usr/local/php/extensions? So when I do make install, they are put into a custom extensions directory, then I can add extension=/usr/local/php/extensions/memcached.so lines to my .ini files.

  3. Is there ever a risk when compiling a new module, that it will go in a different directory than the directory in question #1?

Best Answer

"no-debug-non-zts-20090626" means that it's built without the debug flag, and without ZTS, which is the acronym PHP uses to indicate internal thread saftey. The datestamp is used to identify the internal API version. I'm pretty sure that one identifies PHP 5.3.

Instead of compiling these yourself and thus causing these questions to need answers, you probably want to really look for precompiled versions of these modules provided by your OS distribution or a trusted third party. Memcached and xdebug are amazingly common extensions, and chances are that they're already easily available to you.

Failing that, you probably want to use the pecl tool to download, compile and install these for you. These tools exist for good reasons.