We used to install PHP's Redis extension using PECL. But it seems PECL has dropped support for this for PHP versions less than 7.0. What's the best way to do this without PECL? We're on Ubuntu 14.x running PHP 5.6
ubuntu@box776:~$ pecl help version
PEAR Version: 1.10.1
PHP Version: 5.6.18
Zend Engine Version: 2.6.0
Running on: Linux box776.localdomain 3.13.0-86-generic #131-Ubuntu SMP Thu May 12 23:33:13 UTC 2016 x86_64
Update 1
$ sudo apt-get install php5-redis
Reading package lists... 0%
Reading package lists... 0%
Reading package lists... 0%
Reading package lists... 0%
Reading package lists... 0%
Reading package lists... 0%
Reading package lists... 41%
Reading package lists... Done
Building dependency tree... 50%
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
os-prober
Use 'apt-get autoremove' to remove it.
The following NEW packages will be installed:
php5-redis
0 upgraded, 1 newly installed, 0 to remove and 59 not upgraded.
Need to get 105 kB of archives.
After this operation, 359 kB of additional disk space will be used.
0% [Working]Get:1 http://archive.ubuntu.com/ubuntu/ trusty/universe php5-redis amd64 2.2.4-1build2 [105 kB]
13% [1 php5-redis 14.2 kB/105 kB 13%]Fetched 105 kB in 0s (264 kB/s)
Selecting previously unselected package php5-redis.
(Reading database ...
(Reading database ... 10%
(Reading database ... 25%
(Reading database ... 40%
(Reading database ... 303857 files and directories currently installed.)
Preparing to unpack .../php5-redis_2.2.4-1build2_amd64.deb ...
Unpacking php5-redis (2.2.4-1build2) ...
Setting up php5-redis (2.2.4-1build2) ...
php5_invoke: Enable module redis for apache2 SAPI
php5_invoke: Enable module redis for cli SAPI
This all seems to go swimmingly, but then composer install
says:
$ composer install --no-interaction
You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.
Problem 1
- The requested PHP extension ext-redis * is missing from your system. Install or enable PHP's redis extension.
composer install --no-interaction returned exit code 2
Action failed: composer install
Update 2
I SSHed into the box and ran the same command…
ubuntu@box776:~$ apt-get install php5-redis
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
ubuntu@box776:~$ sudo apt-get install php5-redis
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
os-prober
Use 'apt-get autoremove' to remove it.
The following NEW packages will be installed:
php5-redis
0 upgraded, 1 newly installed, 0 to remove and 59 not upgraded.
Need to get 105 kB of archives.
After this operation, 359 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu/ trusty/universe php5-redis amd64 2.2.4-1build2 [105 kB]
Fetched 105 kB in 0s (274 kB/s)
Selecting previously unselected package php5-redis.
(Reading database ... 303857 files and directories currently installed.)
Preparing to unpack .../php5-redis_2.2.4-1build2_amd64.deb ...
Unpacking php5-redis (2.2.4-1build2) ...
Setting up php5-redis (2.2.4-1build2) ...
php5_invoke: Enable module redis for apache2 SAPI
php5_invoke: Enable module redis for cli SAPI
I wonder if those last two lines are what I'm missing? Is it telling me I need to take additional steps to "enable module redis"?
Best Answer
CircleCI loads and configures PHP from its own location:
/opt/circleci/php/{version}
. We solved the posted problem by installingphp-redis
via APT and then wiring CircleCI's version of PHP up to the APT-installed files. It looks like this in ourcircle.yml
file:This broke again recently when CircleCI started running Composer with
php -n
, which declines to load a configuration file for PHP and thus ignores the above change. But you can override the Composer command with your own. We added this tocircle.yml
: