Связаться со мной:

Менеджер версий php для Debian/Ubuntu.

Выкладываю мой скрипт который поможет установить несколько версий php из исходных кодов на ваш сервер. Скрипт делался в первую очередь для Debian и проверялся на Debian 8 x64. Но работает и на Ubuntu. Удобно с помощью скрипта поддерживать актуальные версии php на сервере с вестой, т.к скрипт умеет автоматически обновлять шаблоны весты при сборке.
На debian 7/8 с моими флагами установки без проблем собираются php 5.2 и выше.
На ubuntu 14.04/16.04 по умолчанию собираются php 5.3 и выше. 5.2 при компиляции валится с ошибкой. Поэтому если нужен 5.2 юзайте дебиан.
Что делает скрипт:

  1. При запуске спрашивает какие версии php требуется собрать(версию нужно вводить полностью. Например 7.1.2, а не 7.1. Можно ввести несколько версий через пробел), создавать ли на бинарник php-cgi симлинк в /usr/bin для быстрого доступа. Проверяет наличие на сервере панели vestacp. Если находит её, то спрашивает создавать ли шаблон web для каждой версии.
  2. При первом запуске спрашивает, нужно ли ставить зависимости. Если вы откажетесь от установки зависимостей, то вам нужно их установить самостоятельно. Иначе при сборке вы получите ошибки. При последующих запусках этот шаг пропускается. Нужно понимать что скрипт старается поставить все возможные зависимости, но в разных дистрибутивах могут использоваться разные пакеты или при использовании кастомных флагов компиляции может потребоваться что-то доустановить.
  3. Парсит http://php.net/downloads.php и http://php.net/releases/ на наличие bz2 архива с исходниками указанной юзером версии php. Если находит, скачивает и распаковывает исходники в /opt/php/src.


    Также можно положить архивы с иходниками в /opt/php/src/bzips, тогда скрипт не будет их скачивать.
  4. Конфигурит, по умолчанию с моими параметрами компиляции(подойдут для большинства пользователей). Собирает.

    Тем кто хочет использовать свои параметры компиляции обязательно кликнуть сюда
    Можно свои параметры конфигурирования положить в файл /opt/php/options. Если скрипт находит этот файл, то он использует его для конфигурирования. Свой файл можно сделать на основе моего. Скрипт заменяет version в файле конфигурирования на текущую собираемую версию. Это сделано для того чтобы скрипт автоматом создавал свой каталог для каждой версии. Если вы собираете например версию 5.3.29 и в вашем файле конфигурирования указано prefix=/opt/php/php-version, то это по сути равно prefix=/opt/php/php-5.3.29. При сборке нескольких версий одновременно эту фичу нужно использовать чтобы не собирать все версии в один каталог.
  5. При необходимости создает симлинк и шаблон для весты. Если создает темплейты для весты, то проверяет включен ли модуль cgi в апаче. Если модуль не включен, то включает его.

Запустить скрипт очень просто

# git clone https://github.com/petranikin/mgrvphp.git
# cd mgrvphp
# bash mgrvphp

Немного скриншотов

Поделиться
Отправить
Запинить
19 комментариев
Михаил Губин

Благодарю за превосходный скрипт. С его помощью можно даже новичку без труда сделать разные версии пхп на весте, а так как веста еще и бесплатная, то по моему мнению, это удар по ISPmanager, CPanel и другим платным панелям.

Петр Аникин

Пожалуйста. Пользуйтесь.

mexan

Спасибо огромное!!! Не забрасывай этот скрипт!
А то разработчики еще год будут телится и делать несколько версий php на выбор в VestaCP

mexan

Выпала ошибка при установке:
error: Cannot find OpenSSL’s libraries
Скрин: http://prntscr.com/epfv32

Петр Аникин

Вообще при первом запуске скрипт ставит libssl-dev.
Какую версию php на какую ОС ставите? Попробую повторить ошибку.

mexan

Ставлю php 7.1.3 на Debian 8.7.1 + последняя VestaCP.
В том то и дело что ставится. Я по началу думал. что его не хватает, стал ставить сам. Мне в ответ, что типа libssl-dev уже установлен.

mexan

Попробовал поставить php 7.1.2. Та же ошибка

Петр Аникин

Разрядность системы какая?

mexan

Даже название образа скажу: debian-8.7.1-i386-netinst.iso. Скачан с офф сайта.

Петр Аникин

i386

В этом думаю дело. Мои флаги компиляции 100% работают на x86_64. На debian 8 x86_64 этой ошибки нет, я проверил. На x32 я даже не проверял, поскольку эта разрядность очень редко используется.
Вам нужно сделать свой options файл, или использовать 64 разрядную ОС. Возможно если будут ещё запросы, я замучу отдельные флаги для x32 и скрипт будет их использовать в зависимости от разрядности ОС. Но пока такой возможности нет.

mexan

Спасибо! Да смысл отдельный делать. Сейчас просто переставлю ось на Debian 8 x86_64 и все проблемы!

mexan

Петр Аникин, поставил 64 битную версию. Ваш скрипт встал без проблем!
7.1.2 стоит! Спасибо огромное!

Петр Аникин

Пожалуйста. Пользуйтесь.

mexan

Единственно вопрос: в шаблонах кроме php71, появилось: php71-fcgid.
Прочел что fcgid модуль типа для ускорения работы.
Так вот в данном случае — что выбирать!?

Петр Аникин

php71 сделан на основе шаблона весты php-cgi.
php71-fcgid сделан на основе шаблона phpfcgid.
Выбирайте то что вам подходит для ваших проектов.

mexan

Спасибо еще раз!
Может и глупый вопрос, но почему вы не хотите предложить свой скрипт разработчикам Весты? Идея то очень классная!
А то они мульт версию годами будут делать, если вообще будут делать.

Петр Аникин

Исходный код скрипта выложен на гитхаб, распростараняется скрипт свободно по лицензии MIT. По моим сведениям разработчики весты о существовании скрипта знают. Они как и любой другой пользователь/разработчик могут использовать, модифицировать и распространять этот скрипт абсолютно свободно. Будут они это делать или нет я не знаю.

Антон

Хотелось-бы и для Centos такую фишку

Петр Аникин

На центос есть такой скрипт https://anikin.pw/all/multiversionnost-na-centos-s-vestacp/

Антон

Тот скрипт не ставит версию pho 5.3

Петр Аникин

Жаль. Соберите руками или используйте debian с моим скриптом.

Алёшка

ОГОСПАДЕ! спасибо, что сэкономил мое время!

Петр Аникин

Пожалуйста.

Дмитрий Барабаш

Я считаю, что разработчикам из VESTA стоит включить этот скрипт в remi!
Очень полезная штука, ОГРОМНОЕ СПАСИБИЩЕ автору!

Дмитрий Барабаш

З.Ы. Куда можно задонатить на поддержку этого скрипта?

Петр Аникин

Здравствуйте.
Рад что вам понравился мой скрипт.
wmr R155723618674
upd: вверху страницы добавил копилку для доната)

mexan

Петр Аникин столкнулся с проблемой одной.
При загрузке вложения 50мб, вываливается ошибка:
«Обнаружено нарушение безопасности. Пожалуйста, нажмите „Назад“ в браузере, обновите страницу и попробуйте снова.»
Меняю в Vesta шаблон с php71, на Default и файлы грузятся.
Я так понимаю надо отключить какой-то модуль в php? Не могли б вы подсказать?
Спасибо

Петр Аникин

Здравствуйте. Не могу прокомментировать ошибку вашей cms, т.к не знаю с чем это связано. Я бы начал с осмотра конфигов виртхоста, нет ли там каких-либо ошибок.
У вас как я понимаю cms xenforo, т.к в выдаче гугла много обсуждений этой ошибки именно на этой cms. Попробуйте поискать причину в этих темах.
Я так думаю что проблема с правами на каталоги или файлы, т.к шаблон php71 работает в режиме cgi от пользователя, а default вероятно работает от пользователя апача.

mexan

Петр Аникин спасибо большое!

Петр Аникин

Пожалуйста.

Дмитрий Барабаш

Вопрос, как мне теперь найти php.ini для каждой версии?
Мне необходимо добавить для версии 5.6 extension=phalcon.so
Где мне это сделать?

Петр Аникин

extension можно добавить в /opt/php/php-*версия*/etc/conf.d/ext.ini
Файл php.ini можете создать в /opt/php/php-*версия*/etc/
Также в весте можно создать свой php.ini для каждого сайта в /home/*пользователь*/web/*домен*/cgi-bin/php5-cgi.ini

Александр

Здравствуйте

Вот такой голый дистр:
Operating System: Debian GNU/Linux 8 (jessie)
Kernel: Linux 3.16.0-4-amd64
Architecture: x86-64

Установил весту, далее запускаю скрипт и в процессе установки появляются ошибки вроде:
configure: error: xml2-config not found.
Ставлю вручную libxml2-dev, запускаю снова, опять ошибка но уже другой модуль. И так далее.

Как думаете, в чем может быть проблема?

Петр Аникин

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

apt-get update 
apt-get install curl wget mysql-server make autoconf gcc bison libxml2 libxml2-dev libcurl4-openssl-dev pkg-config libssl-dev bzip2 libbz2-dev libjpeg-dev libpng-dev libxpm-dev libfreetype6-dev libgmp-dev libgmp3-dev libmcrypt-dev libmysqlclient-dev libpspell-dev librecode-dev libpcre3-dev libpcre++-dev libxslt1-dev libonig-dev libmcrypt-dev libreadline-dev libmhash-dev -y
ln -s /usr/include/qdbm/depot.h /usr/include/depot.h
ln -s /usr/lib/libc-client.a /lib/x86_64-linux-gnu/libc-client.a
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a
mkdir /usr/include/freetype2/freetype 
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h
Популярное