3.0.5 puts its .so file in /usr/lib64/php5/lib/extensions/no-debug-non-zts-20060613/memcache.so, but in php.ini variable is: ; Directory in which the loadable extensions (modules) reside. extension_dir = /usr/lib64/php5/lib/php/extensions/no-debug-non-zts-20060613 all other extensions (ffmpeg,suhosin,timezonedb and ZendOptimizer) puts its .so in correct place. It seems that correct version is in pecl-memcache-3.0.5-r1 which is hardmasked in /usr/portage/profiles/package.mask by # Ole Markus With <olemarkus@gentoo.org> (05 Oct 2010) # PHP and PHP-related ebuilds supporting minor version # slotting are masked for testing pls fix path or add relevant information regarding requered php.ini changes to ebuild. Reproducible: Always
Firstly, you shouldn't set the extension_dir variable. The default php.ini file has this one unset. Secondly, we do not directly control where extensions are put. PHP handles this through phpize/php-config. Thirdly, the difference between 3.0.5 and 3.0.5-r1 is *only* that the latter support multiple installations, so it cannot fix any path problems. It would install exensions into e.g /usr/lib64/php5.3 or /usr/lib64/php5.2 depending on the PHP_TARGETS variable. This problem is not specific to pecl-memcache since all extension are handled identically, using the exact same install procedure. The only difference would be that they were compiled for different PHP versions. For me, both pecl-timezonedb and pecl-memcache put the extension in /usr/lib64/php5/lib/extensions/no-debug-non-zts-20090626 I would start with removing extension_dir from php.ini and recompile all extensions. Let me know if that helps or not. Cheers!
> Firstly, you shouldn't set the extension_dir variable. The default php.ini file >has this one unset. Hmm, I've commented out extension_dir variable and reinstalled php. After dispatch-conf I've see that php tries to set this varibale again. barzog@falcon-cl2 ~ $ sudo dispatch-conf --- /etc/php/apache2-php5/php.ini 2010-10-20 19:21:09.000000000 +0300 +++ /etc/php/apache2-php5/._cfg0000_php.ini 2010-10-20 19:25:58.000000000 +0300 @@ -483,7 +488,7 @@ user_dir = ; Directory in which the loadable extensions (modules) reside. -; extension_dir = /usr/lib64/php5/lib/php/extensions/no-debug-non-zts-20060613 +extension_dir = /usr/lib64/php5/lib/extensions/no-debug-non-zts-20060613 ; Whether or not to enable the dl() function. The dl() function does NOT work ; properly in multithreaded servers, such as IIS or Zeus, and is automatically Also I reinstall all extensions: all extensions goes to /usr/lib64/php5/lib/extensions/no-debug-non-zts-20060613/memcache.so as intended. php-config output: --extension-dir [/usr/lib64/php5/lib/extensions/no-debug-non-zts-20060613] So, why renstalling php is sets extensions_dir?
Created attachment 251351 [details] emerge --info ouput
(In reply to comment #2) > So, why renstalling php is sets extensions_dir? > It could be that the extension_dir setting is still enabled with the default php 5.2 ini file. I only had the chance to check out the one shipped with 5.3 at the time.
So we have inconsistence here. In php 5.2.14 php set extension_dir in config file but not in php-config. So any suggestions (for those with initial setup of php 5.2.xx and modules)?
(In reply to comment #5) > So we have inconsistence here. In php 5.2.14 php set extension_dir in config > file but not in php-config. So any suggestions (for those with initial setup of > php 5.2.xx and modules)? > Well. We already have a warning saying something like "You may have to recompile your PHP extensions now". I could also add something like "Also make sure that you merge in the correct extension_dir ini setting for all your php.ini files."
OK. I think this is sufficient.
Commited. Thanks