wrong order of PHP extensions after update

Miroslav Lachman 000.fbsd at quip.cz
Wed Jan 13 20:14:31 UTC 2016


I end up with wrong extension order in /usr/local/etc/php/extensions.ini 
after each update of PHP by `pkg upgrade`.
It is caused by PECL extensions. PECL extensions are not updated (no 
version change) so extensions.ini have them listed at the top.

# cat /usr/local/etc/php/extensions.ini
extension=intl.so
extension=dbase.so
extension=memcached.so
zend_extension=/usr/local/lib/php/20121212/xdebug.so
extension=xml.so
extension=session.so
extension=pdo.so
extension=mysql.so
extension=hash.so
extension=dom.so
extension=zlib.so
extension=zip.so
extension=xsl.so
extension=xmlwriter.so
extension=xmlreader.so
extension=tokenizer.so
extension=sqlite3.so
extension=sockets.so
extension=soap.so
extension=simplexml.so
extension=posix.so
extension=phar.so
extension=pdo_mysql.so
extension=openssl.so
zend_extension=/usr/local/lib/php/20121212/opcache.so
extension=mysqli.so
extension=mssql.so
extension=mcrypt.so
extension=mbstring.so


Then I got this error

PHP Warning:  PHP Startup: Unable to load dynamic library 
'/usr/local/lib/php/20121212/memcached.so' - 
/usr/local/lib/php/20121212/memcached.so: Undefined symbol "ps_globals" 
in Unknown on line 0

There are two ways to workaround it:
1) pkg install -f `pkg info -E pecl-\*`
2) manually edit extensions.ini and move them down

None of it is really a solution.

Do somebody have any idea how to universally solve it?
I think there must be some tool to automatically check and change order 
of extensions after each update.
Or PECL extensions must have PORTREVISION bump on each PHP version 
change. (there is one problem - PECL extensions are shared across 
different PHP branches: php55, php56, php7)

Miroslav Lachman


More information about the freebsd-ports mailing list