Установка на Linux нескольких версий PHP

03.11.2014

Не секрет, что в PHP не соблюдается обратная совместимость. Язык постоянно развивается, добавляются новые плюшки, плохие старые библиотеки и функции выбрасывают. Актуален вопрос тестирования или разработки на разных версиях пыхи.

Рассмотрим один из способов в Mint / Ubuntu.
Нам поможет PHPBrew.
PHPBrew MAC

В функционале утилиты PHPBrew: построение множества версий php с настраиваемым набором расширений внутри домашней директории (без root доступа), компиляция php модуля apache для разных версий отдельно, простое переключение версий (без root доступа).

На github странице проекта Вы найдете описание, инструкцию и зависимости. Там целая инструкция по удовлетворению зависимостей, обязательно выполните ее.
Кроме того, если Вам нужен php с сервером apache, то установите пакет apache2-dev, чтобы у вас появился файл /usr/bin/apxs2, без этого построение с параметром +apxs2 закончиться неудачей.
Есть еще одна проблема с apache, у PHPBrew не будет прав чтобы менять в конфиге какой модуль включен и не будет прав добавлять модули от дополнительных версий php. Для домашней системы можно решить проблему добавлением прав текущему пользователю на 2 каталога:

sudo chmod a+w /usr/lib/apache2/modules/
sudo chmod a+w /etc/apache2/mods-available/

Параноикам можно либо закрывать доступ обратно после пользования программой.

Какие еще приколы.
После установки (смотрите актуальную информацию на странице проекта) есть примеры установки php, например такой:

phpbrew install 5.3.10 +default

можно посмотреть в консоли и подумать что все отлично, но потом запросто окажеться что не работает ни mysql, ни GD, а новый php сам не привязывается к apache. Будем собирать иначе.
Например так:

phpbrew install 5.6.2 +default +gd +mysql +pgsql=/usr/lib/postgresql/9.3/bin +sqlite +curl +mbstring +apxs2 -- --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-libdir=/lib/x86_64-linux-gnu --with-gd=shared --enable-gd-native-ttf --with-jpeg-dir=/usr --with-png-dir=/usr

Перечислены нужные расширения. Отдельное внимание apxs2, про него я писал выше, такое чаще всего нужно. Также отдельное внимание with-mysql-sock. Это не ошибка что идет два знака минус, пробел, а потом параметр начинается опять с двух минусов. Первые -- отделяют список расширений от параметров построения. Путь /var/run/mysqld/mysqld.sock - обязательно существующий файл в системе. Если по адресу /lib/x86_64-linux-gnu у Вас нету файла libjpeg.so, то нужно что-то менять ;)
Следующие параметры относятся к GD. Если Вам нужна эта библиотека, то подскажу что скорей всего этого будет не достаточно чтобы она заработала: после построения нужно будет еще добавить в php.ini строку c путем к gd.so, ищите его в
~/.phpbrew/php/php-5.6.2/lib/php/extensions/debug-non-zts-ЧИСЛО_ИЗ_ДАТЫ/
(или версия php может быть другой), а сам php.ini ищите в
~/.phpbrew/php/php-ваша-версия/etc/

Теперь можно следовать подсказке, которая будет после билда, т.е Enjoy и

phpbrew use php-5.6.2

Если Вы ранее дали права, как Я писал выше, то автоматически к apache добавится и включиться новая версия. Но чтобы она вступила в силу перезагружаем сервер:

sudo service apache2 restart

Теперь можно зайти на локальный веб-сервер и посмотреть что пишут в phpinfo()
Все получиться) Если что, может помочь https://github.com/phpbrew/phpbrew/wiki/TroubleShooting либо Google.


1 оценка
Комментарии
Никита:
Для установки php-7:

phpbrew install next as php-7.0.0

Оставить комментарий