Rose debug info
---------------

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

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

Скрипт мультиверсионности мной более не поддерживается, т.к в новых версиях дебиан все сложнее автоматизировать установку старых версий php. Поэтому php 5 собирайте руками. Либо проходите по ссылке.

Выкладываю мой скрипт который поможет установить несколько версий 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

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

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

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

Петр Аникин 2017

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

mexan 2017

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

mexan 2017

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

Петр Аникин 2017

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

mexan 2017

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

mexan 2017

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

Петр Аникин 2017

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

mexan 2017

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

Петр Аникин 2017

i386

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

mexan 2017

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

mexan 2017

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

Петр Аникин 2017

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

mexan 2017

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

Петр Аникин 2017

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

mexan 2017

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

Петр Аникин 2017

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

Антон 2017

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

Петр Аникин 2017

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

Антон 2017

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

Петр Аникин 2017

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

Алёшка 2017

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

Петр Аникин 2017

Пожалуйста.

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

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

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

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

Петр Аникин 2017

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

mexan 2017

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

Петр Аникин 2017

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

mexan 2017

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

Петр Аникин 2017

Пожалуйста.

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

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

Петр Аникин 2017

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

Александр 2017

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

Вот такой голый дистр:
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, запускаю снова, опять ошибка но уже другой модуль. И так далее.

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

Петр Аникин 2017

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

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
Николай 2018

Петр подскажите, пожалуйста, если я использую nginx+php-fpm как правильно подключить вторую версию? К примеру установлена убунта 16.04, по умолчанию установлен php7.0 и на нем работает один сайт, с помощью скрипта устанавливаю необходимую вторую версию php 5.5.38, как мне теперь к ней присоединить второй сайт? Если стандартная версия php устанавливается с модулями в каталог /etc/php/..... и там все понятно что где конфигурировать, то для второй версии установленной при помощи скрипта ничего не могу найти и понять. Заранее прошу прощения если задаю немного глупый вопрос. Спасибо.

Петр Аникин 2018

Скрипт не работает на конфигурации nginx+php-fpm

Евгений Барионов 2018

Здравствуйте Пётр, скажите пожалуйста, как можно использовать ваш скрипт в Debian 9, я получил такое сообщение:
Пакет libmysqlclient-dev недоступен, но упомянут в списке зависимостей другого пакета.
Это может означать, что пакет отсутствует, устарел, или доступен из источников, не упомянутых в sources.list

E: Для пакета «libmysqlclient-dev» не найден кандидат на установку

а затем такую ошибку:
configure: error: Cannot find OpenSSL’s <evp.h>

Ставил на свежеустановленный Debian 9, после установки весты. При первом запуске зависимости установил, вернее согласился с их установкой.

Петр Аникин 2018

Ставьте на debian 8 и ошибок не будет. На debian 9 вручную ставьте недостающие зависимости.

Евгений Барионов 2018

Да, на Debian 8 все без проблем работает. Спасибо за ваш труд.

Петр Аникин 2018

Пожалуйста. Спасибо лучше говорить вот здесь https://anikin.pw/donate.html

Антон 2018

Большое спасибо за скрипт! Подскажите пожалуйста — есть ли возможность прописывать свой php.ini каждому юзеру? Если да, то как, если нет, то подскажите пожалуйста как можно реализовать?:) Еще раз спасибо!

Петр Аникин 2018

Можно средствами vestacp.

Антон 2018

А еще подскажите пожалуйста — можно ли настроить так, чтобы скрипты работали через apache + mod_php? fcgi медленный довольно, на битриксе ощутимо прям.
Ну и если можно nginx + php-fpm

Петр Аникин 2018

Скрипт настраивает только как cgi и fcgi.

Юрий 2018

Добрый день, Петр!
Есть ли возможность удалять уже установленные версии PHP?

Петр Аникин 2018

Удаляете каталог из /opt и при необходимости симлинк и шаблон. Все.

Юрий 2018

И еще вопрос.
Установил скрипт, установил php 7.2.3, назначил для default шаблон php72-fcgi, смотрю phpinfo, показывает, что версия не изменилась, 5.6.33.
Что я упустил?
Debian GNU/Linux 8.10 (jessie) x32_64

Петр Аникин 2018

Попробуйте передернуть шаблон в настройках сайта в разделе web.

Юрий 2018

Попробуйте передернуть шаблон в настройках сайта в разделе web.

Спасибо, получилось. Я подумал, что шаблон нужно назначать для юзера.

Артур 2018

Доброго дня. Скрипт работает безупречно. Однако возник вопрос. Мне необходимо установить Imagick на одну из установленных версий php7. Каким образом это можно сделать?

Петр Аникин 2018
Андрей 2018

Запускал скрипт под Юбунту сервер 16.04. В диалоге не пришло предложение установить шаблоны для Весты. При этом дополнительные версии РНР установились. Подскажите, как исправить?

Петр Аникин 2018

Создайте шаблоны вручную на основе шаблона phpcgi.