I've upgraded my MacBook to Mavericks and ruined my development environment. The problem I have right now is that my pear/pecl still tries to install for my previous (5.3) version of PHP instead of version 5.4.
PHP version:
$ php -v
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
Pear
$ pear version
PEAR Version: 1.9.4
PHP Version: 5.4.17
Zend Engine Version: 2.4.0
Running on: Darwin MBP-retina.local 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT2013; root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64
If I install apc with
$ sudo pecl install apc
downloading APC-3.1.13.tgz ...
Starting to download APC-3.1.13.tgz (171,591 bytes)
.....................................done: 171,591 bytes
55 source files, building
running: phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
...
Build process completed successfully
Installing '/usr/local/Cellar/php53/5.3.26/include/php/ext/apc/apc_serializer.h'
Installing '/usr/local/Cellar/php53/5.3.26/lib/php/extensions/no-debug-non-zts-20090626/apc.so'
install ok: channel://pecl.php.net/APC-3.1.13
Extension apc enabled in php.ini
And enable the apc module in my php.ini php -v changes to this:
$ php -v
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20100525/apc.so' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20100525/apc.so, 9): image not found in Unknown on line 0
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
So pecl installs my apc extension in /usr/local/Cellar/php53/5.3.26/lib/php/extensions/no-debug-non-zts-20090626
and php expects it in /usr/lib/php/extensions/no-debug-non-zts-20100525/
.
Simply making a symlink gives the following error:
$ php -v
PHP Warning: PHP Startup: apc: Unable to initialize module
Module compiled with module API=20090626
PHP compiled with module API=20100525
These options need to match
in Unknown on line 0
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
So that's not a solution.
Can anybody point me in the right direction? I really don't have a clue what is going on here.
None of the other answers (as yet) seem to address having multiple "co-installable" PHP versions while wanting to build a given extension for all installed PHP versions.
To illustrate the scenario in which I find myself (I'm using the Ondrej Surý PHP PPAs for Ubuntu 16.04 LTS):
pecl install extension-name
does the job for PHP 7.1, but not the others.The other anwsers indicate that while it's possible to uninstall/reinstall
php*-dev
, I'd much rather not, given the intentional, co-installed PHP versions on the system.One solution is to build the extension for each version present on the system.
This snippet demonstrates building with PHP 5.6, but I've done the same for 7.0 and 7.1 and the steps are the same.
This example demonstrates cloning the extension from a Git repository, but one may use any source directory.
(
#
indicates that you must be root or usesudo
)The solution was pretty simple. I had to make modifications to my pecl config. It turned out that these two command did the trick:
pecl used the wrong phpize. There were two versions of the phpize. The same counts for my php.ini file.
In my case, I was attempting to install Gearman.
pecl install gearman would install it incorrectly.
php -i
would show:Yet pecl would install using:
After changing my config settings to use:
First Fix
I noticed that I would still get
You can resolve this by using the config setting:
Additional Fix
Why was this a problem?
For me, I got into this problem because I added a custom PPA and reinstalled PHP. This meant that my previous install of php5-dev was out of sync.
You if you ever get into the same situation, you might just want to run..
Alternatively, you can download the source and run phpize.
There is a way to switch PHP-Version on Ubuntu:
Source: https://superuser.com/a/1100911/371795
Better to reinstall phpize extensions as it will be used by PECL and not make hacks.
Do next (php 5.5 => php 5.6 example) :
(you can change 5.6 to version you need)
Then: