Переключение между версиями PHP на одной машине
Возникла задача:- Иметь версию php без расширения gettext (Если ставить из пакетов, то оно уже предустановлено и выпиливается с трудом)
- Иметь возможность быстро переключаться между версиями 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В моем случае при установке расширения oci8 возникли следующие проблемы:
phpbrew ext enable mongo
- Нужно было отследить совместимость версии php и pecl расширения и ставить только нужную версию
- 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