Мой профиль...

Search This Blog

Thursday, June 9, 2016

Switch between PHP versions on the same machine - Переключение между версиями РНР на одном компьютере

Переключение между версиями PHP на одной машине

Возникла задача:

  1. Иметь версию php без расширения gettext (Если ставить из пакетов, то оно уже предустановлено и выпиливается с трудом)
  2. Иметь возможность быстро переключаться между версиями php на своей машине (сейчас происходит фаза активного перехода с 5.6 на 7.x)
Сходу было найдено решение: phpbrew. Тут сейчас опишу те подводные камни, на которые наплыл.

Как установить phpbrew

curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
chmod +x phpbrew

Как работает phpbrew

В home dir создается папка .phpbrew. Внутри нее в подпапке php будут все наши версии php с установленными зависимостями

Установка новой версии php

phpbrew install x.y.z
Возвращаясь к моей проблеме №1 - отключение расширения gettext, я делал установку следующим образом
phpbrew install x.y.z -gettext

Переключение между версиями php

phpbrew switch 5.4.18

Возможные проблемы при установке

У меня при сборке появилась следующая проблема
checking for BZip2 support... yes
checking for BZip2 in default path... not found
configure: error: Please reinstall the BZip2 distribution
*** There was an error while trying to configure php. Check the custom/suphp/configure.php5 file
Суть проблемы в том, что пакет BZip2 установлен, а вот dev версия пакета - нет.
Решается следующим образом:
yum install bzip2-devel
 или
apt-get install libbz2-dev
Аналогичная проблема была с readline
Более универсальное решение в моем случае
apt-cache search libreadline
и ставим нужный пакет.

Установка расширение php

phpbrew ext install xdebug
Не забудьте предварительно переключится на нужную версию php

You can also install extension via PECL and enable it manually:
pecl install mongo
phpbrew ext enable mongo
В моем случае при установке расширения oci8 возникли следующие проблемы:

  1. Нужно было отследить совместимость версии php и pecl расширения и ставить только нужную версию
  2. phpbrew не хотел включать (enable) расширение. Решилось путем создания oci8.ini руками и написание внутри "extension=oci8.so"
Установка php-7.0 zts:
> phpbrew install --name php-7.0-zts 7.0 +default -gettext +apxs2=/usr/bin/apxs2 +openssl +mcrypt +zts

Релевантные посты...

Related Posts with Thumbnails