Менеджер версий 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 юзайте дебиан.
Что делает скрипт:
- При запуске спрашивает какие версии php требуется собрать(версию нужно вводить полностью. Например 7.1.2, а не 7.1. Можно ввести несколько версий через пробел), создавать ли на бинарник php-cgi симлинк в /usr/bin для быстрого доступа. Проверяет наличие на сервере панели vestacp. Если находит её, то спрашивает создавать ли шаблон web для каждой версии.
- При первом запуске спрашивает, нужно ли ставить зависимости. Если вы откажетесь от установки зависимостей, то вам нужно их установить самостоятельно. Иначе при сборке вы получите ошибки. При последующих запусках этот шаг пропускается. Нужно понимать что скрипт старается поставить все возможные зависимости, но в разных дистрибутивах могут использоваться разные пакеты или при использовании кастомных флагов компиляции может потребоваться что-то доустановить.
- Парсит http://php.net/downloads.php и http://php.net/releases/ на наличие bz2 архива с исходниками указанной юзером версии php. Если находит, скачивает и распаковывает исходники в /opt/php/src.
Также можно положить архивы с иходниками в /opt/php/src/bzips, тогда скрипт не будет их скачивать.
- Конфигурит, по умолчанию с моими параметрами компиляции(подойдут для большинства пользователей). Собирает.
Тем кто хочет использовать свои параметры компиляции обязательно кликнуть сюда
Можно свои параметры конфигурирования положить в файл /opt/php/options. Если скрипт находит этот файл, то он использует его для конфигурирования. Свой файл можно сделать на основе моего. Скрипт заменяет version в файле конфигурирования на текущую собираемую версию. Это сделано для того чтобы скрипт автоматом создавал свой каталог для каждой версии. Если вы собираете например версию 5.3.29 и в вашем файле конфигурирования указано prefix=/opt/php/php-version, то это по сути равно prefix=/opt/php/php-5.3.29. При сборке нескольких версий одновременно эту фичу нужно использовать чтобы не собирать все версии в один каталог.
- При необходимости создает симлинк и шаблон для весты. Если создает темплейты для весты, то проверяет включен ли модуль cgi в апаче. Если модуль не включен, то включает его.
Запустить скрипт очень просто
# git clone https://github.com/petranikin/mgrvphp.git
# cd mgrvphp
# bash mgrvphp
Немного скриншотов
Благодарю за превосходный скрипт. С его помощью можно даже новичку без труда сделать разные версии пхп на весте, а так как веста еще и бесплатная, то по моему мнению, это удар по ISPmanager, CPanel и другим платным панелям.
Пожалуйста. Пользуйтесь.
Спасибо огромное!!! Не забрасывай этот скрипт!
А то разработчики еще год будут телится и делать несколько версий php на выбор в VestaCP
Выпала ошибка при установке:
error: Cannot find OpenSSL’s libraries
Скрин: http://prntscr.com/epfv32
Вообще при первом запуске скрипт ставит libssl-dev.
Какую версию php на какую ОС ставите? Попробую повторить ошибку.
Ставлю php 7.1.3 на Debian 8.7.1 + последняя VestaCP.
В том то и дело что ставится. Я по началу думал. что его не хватает, стал ставить сам. Мне в ответ, что типа libssl-dev уже установлен.
Попробовал поставить php 7.1.2. Та же ошибка
Разрядность системы какая?
Даже название образа скажу: debian-8.7.1-i386-netinst.iso. Скачан с офф сайта.
В этом думаю дело. Мои флаги компиляции 100% работают на x86_64. На debian 8 x86_64 этой ошибки нет, я проверил. На x32 я даже не проверял, поскольку эта разрядность очень редко используется.
Вам нужно сделать свой options файл, или использовать 64 разрядную ОС. Возможно если будут ещё запросы, я замучу отдельные флаги для x32 и скрипт будет их использовать в зависимости от разрядности ОС. Но пока такой возможности нет.
Спасибо! Да смысл отдельный делать. Сейчас просто переставлю ось на Debian 8 x86_64 и все проблемы!
Петр Аникин, поставил 64 битную версию. Ваш скрипт встал без проблем!
7.1.2 стоит! Спасибо огромное!
Пожалуйста. Пользуйтесь.
Единственно вопрос: в шаблонах кроме php71, появилось: php71-fcgid.
Прочел что fcgid модуль типа для ускорения работы.
Так вот в данном случае — что выбирать!?
php71 сделан на основе шаблона весты php-cgi.
php71-fcgid сделан на основе шаблона phpfcgid.
Выбирайте то что вам подходит для ваших проектов.
Спасибо еще раз!
Может и глупый вопрос, но почему вы не хотите предложить свой скрипт разработчикам Весты? Идея то очень классная!
А то они мульт версию годами будут делать, если вообще будут делать.
Исходный код скрипта выложен на гитхаб, распростараняется скрипт свободно по лицензии MIT. По моим сведениям разработчики весты о существовании скрипта знают. Они как и любой другой пользователь/разработчик могут использовать, модифицировать и распространять этот скрипт абсолютно свободно. Будут они это делать или нет я не знаю.
Хотелось-бы и для Centos такую фишку
На центос есть такой скрипт https://anikin.pw/all/multiversionnost-na-centos-s-vestacp/
Тот скрипт не ставит версию pho 5.3
Жаль. Соберите руками или используйте debian с моим скриптом.
ОГОСПАДЕ! спасибо, что сэкономил мое время!
Пожалуйста.
Я считаю, что разработчикам из VESTA стоит включить этот скрипт в remi!
Очень полезная штука, ОГРОМНОЕ СПАСИБИЩЕ автору!
З.Ы. Куда можно задонатить на поддержку этого скрипта?
Здравствуйте.
Рад что вам понравился мой скрипт.
wmr R155723618674
upd: вверху страницы добавил копилку для доната)
Петр Аникин столкнулся с проблемой одной.
При загрузке вложения 50мб, вываливается ошибка:
«Обнаружено нарушение безопасности. Пожалуйста, нажмите „Назад“ в браузере, обновите страницу и попробуйте снова.»
Меняю в Vesta шаблон с php71, на Default и файлы грузятся.
Я так понимаю надо отключить какой-то модуль в php? Не могли б вы подсказать?
Спасибо
Здравствуйте. Не могу прокомментировать ошибку вашей cms, т.к не знаю с чем это связано. Я бы начал с осмотра конфигов виртхоста, нет ли там каких-либо ошибок.
У вас как я понимаю cms xenforo, т.к в выдаче гугла много обсуждений этой ошибки именно на этой cms. Попробуйте поискать причину в этих темах.
Я так думаю что проблема с правами на каталоги или файлы, т.к шаблон php71 работает в режиме cgi от пользователя, а default вероятно работает от пользователя апача.
Петр Аникин спасибо большое!
Пожалуйста.
Вопрос, как мне теперь найти 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, запускаю снова, опять ошибка но уже другой модуль. И так далее.
Как думаете, в чем может быть проблема?
В том что при первом запуске вы не установили зависимости.
Петр подскажите, пожалуйста, если я использую nginx+php-fpm как правильно подключить вторую версию? К примеру установлена убунта 16.04, по умолчанию установлен php7.0 и на нем работает один сайт, с помощью скрипта устанавливаю необходимую вторую версию php 5.5.38, как мне теперь к ней присоединить второй сайт? Если стандартная версия php устанавливается с модулями в каталог /etc/php/..... и там все понятно что где конфигурировать, то для второй версии установленной при помощи скрипта ничего не могу найти и понять. Заранее прошу прощения если задаю немного глупый вопрос. Спасибо.
Скрипт не работает на конфигурации nginx+php-fpm
Здравствуйте Пётр, скажите пожалуйста, как можно использовать ваш скрипт в Debian 9, я получил такое сообщение:
Пакет libmysqlclient-dev недоступен, но упомянут в списке зависимостей другого пакета.
Это может означать, что пакет отсутствует, устарел, или доступен из источников, не упомянутых в sources.list
E: Для пакета «libmysqlclient-dev» не найден кандидат на установку
а затем такую ошибку:
configure: error: Cannot find OpenSSL’s <evp.h>
Ставил на свежеустановленный Debian 9, после установки весты. При первом запуске зависимости установил, вернее согласился с их установкой.
Ставьте на debian 8 и ошибок не будет. На debian 9 вручную ставьте недостающие зависимости.
Да, на Debian 8 все без проблем работает. Спасибо за ваш труд.
Пожалуйста. Спасибо лучше говорить вот здесь https://anikin.pw/donate.html
Большое спасибо за скрипт! Подскажите пожалуйста — есть ли возможность прописывать свой php.ini каждому юзеру? Если да, то как, если нет, то подскажите пожалуйста как можно реализовать?:) Еще раз спасибо!
Можно средствами vestacp.
А еще подскажите пожалуйста — можно ли настроить так, чтобы скрипты работали через apache + mod_php? fcgi медленный довольно, на битриксе ощутимо прям.
Ну и если можно nginx + php-fpm
Скрипт настраивает только как cgi и fcgi.
Добрый день, Петр!
Есть ли возможность удалять уже установленные версии PHP?
Удаляете каталог из /opt и при необходимости симлинк и шаблон. Все.
И еще вопрос.
Установил скрипт, установил php 7.2.3, назначил для default шаблон php72-fcgi, смотрю phpinfo, показывает, что версия не изменилась, 5.6.33.
Что я упустил?
Debian GNU/Linux 8.10 (jessie) x32_64
Попробуйте передернуть шаблон в настройках сайта в разделе web.
Спасибо, получилось. Я подумал, что шаблон нужно назначать для юзера.
Доброго дня. Скрипт работает безупречно. Однако возник вопрос. Мне необходимо установить Imagick на одну из установленных версий php7. Каким образом это можно сделать?
Например так https://gist.github.com/sjelfull/69136fe74339025aa151
Запускал скрипт под Юбунту сервер 16.04. В диалоге не пришло предложение установить шаблоны для Весты. При этом дополнительные версии РНР установились. Подскажите, как исправить?
Создайте шаблоны вручную на основе шаблона phpcgi.