logo

VestaCP, несколько версий php или мульти php на Debian и Ubuntu

Разместил , . Последнее изменение: 2018-10-08. / 26 комментариев

Мульти php на VestaCP

  1. Как работает менеджер версий php?
  2. Как взаимодействовать с php менеджером?
  3. Как проверить версию php на сервере и сайте?

Привет читатель, не так давно на просторах интернета наткнулся на прекрасный скрипт облегчающий внедрение в VestaCP нескольких версий php. Хочется отметить, что скрипт в первую очередь делался для Debian, но и с Ubuntu так же будет работать (правда с одним но). Сегодня убедимся в работоспособности скрипта на Ubuntu 16.04.

Особенности для Debian: скрипт собирает версии 5.2 и выше.

Особенности для Ubuntu: скрипт собирает версии 5.3 и выше. Для 5.2 выдает ошибку, поэтому, если вам требуется 5.2, используете Debian.

Что нам потребуется:

  1. Операционка Debian или Ubuntu
  2. Установленная VestaCP
  3. Модуль апача cgi (установлен по умолчанию)
  4. SHH доступ к серверу.
Если нужен только php 7 и не хочется париться, то кликни сюда

Если вам нужен только php 7, то советую вам переустановить VestaCP на новый дистрибутив ОС, в репозитории которого уже прописана новая версия php. Как пример могу привести Ubuntu 16.04.

Внимание! По всей видимости Deban 9 не поддерживается, подробности в комментариях.

Как работает менеджер версий php в VestaCP?

  1. Вводим нужные нам версии php через пробел с указанием точного номера (к примеру 5.6 не правильно, 5.6.30 - правильно)
  2. Потом скрипт просматривает http://php.net/downloads.php и http://php.net/releases/ на предмет наличия архивов с указными версиями php. Если находит. то скачивает и распаковывает в /opt/php/src. Этот этап можно пропустить, если сразу положить исходные файлы в /opt/php/src/bzips.
  3. Скрипт ставит нужные зависимости, без которых скрипт не может работать. Эта процедура проводится один раз при первом запуске, при последующих ее следует пропускать.
  4. Создает шаблоны для Apache, которые потом легко можно включить в панеле VestaCP.

Как взаимодействовать с php менеджером?

  1. Прежде всего загрузим и запустим менеджер под root.
    git clone https://github.com/petranikin/mgrvphp.git
    cd mgrvphp
    bash mgrvphp
  2. Вводим через пробел нужные версии php (помните: 7.17.1.4), номера версий можно найти на сайте http://php.net/releases, пример ввода указан на скрине ниже.VestaCP, несколько версий php или мульти php на Debian и Ubuntu
  3. Создавать ли ссылки в /usr/bin для быстрого доступа к файлам? Видимо скрипт может работать не правильно если не создать ссылки, по этому нажимаем Y.  В результате вы получите следующее: VestaCP, несколько версий php или мульти php на Debian и Ubuntu
  4. Создавать шаблон VestaCP для каждой указанной версии? Нажимаем да У.
  5. Далее вас спросят устанавливать ли зависимости? Тут обязательно жмет да У, т. к. это первый запуск скрипта на сервере.
  6. После этого остается только ждать. Установка займет какое-то время, много зависит от конфигурации сервера и количества шаблонов (у меня заняло более 30 минут).
  7. Как только установка завершится можно перейти в панель у установить нужный шаблон.

В списке шаблонов вы скорее всего увидите php71 и php71-fcgid. Это не ошибка. Просто php71 сделан на основе шаблона Vesta php-cgi, а  php71-fcgid на основе шаблона phpfcgid. Выберите то, что вам больше подходит.

Как проверить версию php на сервере и сайте?

Теперь давайте проверим успешность нашего труда.

  1. Создаем файл phpinfo.php. Открываем его текстовым редактором и вводим следующее:
    <?php
    phpinfo();
    ?>
  2. Загружаем файл в корень сайта → открываем файл в браузере и смотрим на сменную версию php.

Проверить версию php, установленную по умолчанию, можно с помощью консольной команды:

php  -v

Вот и все готово, пишите комментарии, задавайте вопросы. Мне очень важна обратная связь.

1
2
3
4

26 комментариев Добавить комментарий

  • А скрипт для удаления установленных дополнительный версий php есть?

  • Добрый день. На весте 10+ сайтов. сервер убунта 14, пхп 5.5. Нужно было чтобы mediawiki работала под 7 версией пхп (чтобы обновить саму медиавики до последней версии). Воспользовался скриптом и всё ок кроме 2 моментов. 1. как мне "доставить" плагин php7.1-ldap, к тому php, что я поставил через скрипт?
    2. если обновлять медиавики через консоль, то это запускается командой php update.php
    Т.к. требуемая версия пхп для обновления 7, то я запускал так: php71 update.php и получил такое результат:

    "X-Powered-By: PHP/7.1.21
    Content-type: text/html; charset=UTF-8

    This script must be run from the command line"

    Хотя и запускал не из консоли. Если установить php7 на весь сервер без скрипта, а обычным обновлением, то скрипт отрабатывает

  • Админ, помоги пожалуйста

    После установки в логах ошибка PHP Warning: Module 'ionCube Loader' already loaded in Unknown on line 0

    PHP Version 5.4.45

  • Подскажите как поставить memcache на debian8 php7.2
    уже стоит и работает на php5.6 , но на php7.2 не определяется, php7.2 устанавливался этим скриптом
    На apt-get install php7.2-memcache php7.2-memcached пишет
    E: Unable to locate package php7.2-memcache
    E: Couldn't find any package by regex 'php7.2-memcache'
    E: Unable to locate package php7.2-memcached
    E: Couldn't find any package by regex 'php7.2-memcached'

  • Привет читатели блога, для тех кто пытался на debian 9 установить PHP с помощью этого скрипта и словил ошибки, написал небольшую инструкции.

    Все действия необходимо производить под root, находясь в /home

    VestaCP установлена со всеми компанентами, предварительно в панели управления остановленны все службы, кроме fail2ban и iptables

    Сохраняем файл репозиториев, на всякий непредвиденный случай

    # cp /etc/apt/sources.list /etc/apt/sources.list.backup

    Вносим правки, добавляя запись к сушествующим репозиториям, это укажет debian искать пакеты со всех доступных репозиториев

    # nano /etc/apt/sources.list

    deb http://httpredir.debian.org/debian/ stretch main contrib non-free
    deb-src http://httpredir.debian.org/debian/ stretch main contrib non-free

    # apt-get update

    Установите необходимые пакеты в систему, без этого у вас вероятно не будет работать скрипт

    # apt-get install firmware-linux-free firmware-linux-nonfree --fix-missing

    # apt-get install linux-headers-`uname -r` binutils pkg-config build-essential --fix-missing

    # apt-get install libxml2-dev libssl-dev libpcre3 libpcre3-dev zlib1g-dev libbz2-dev libjpeg-dev libpng-dev libonig-dev libpspell-dev libreadline-gplv2-dev libxslt-dev --fix-missing

    # apt-get install git-core subversion build-essential autoconf automake libtool libncurses5 libncurses5-dev make libjpeg-dev gawk libz-dev pkg-config libcurl4-openssl-dev libexpat1-dev libx11-dev unixodbc-dev libasound2-dev libogg-dev libvorbis-dev libperl-dev libgdbm-dev libdb-dev python-dev uuid-dev software-properties-common wget --fix-missing

    # apt-get install libmagickwand-dev libmagickcore-dev --fix-missing

    # apt-get install php-dev --fix-missing

    # apt-get install libturbojpeg0-dev --fix-missing

    # apt-get install libjpeg62-turbo-dev --fix-missing

    # apt-get install libmcrypt-dev --fix-missing

    Меняете значения в mgrvphp этот файл находится в папке со скриптом

    строка 54 меняете http://php.net/releases/ на https://secure.php.net/downloads.php

    строка 57 меняете http://php.net/downloads.php на https://secure.php.net/downloads.php

    строка 58 меняете http://php.net на https://php.net

    строка 70 меняете http://php.net на https://php.net

    Это пути по которым скрипт ищет файлы для скачивания, но у меня скрипт по непонятной мне причине идет за файлами для скачивания вот сюда http://am1.php.net/distributions причем страница не защишена HTTPS. Значит верим в то что это не страница злых редисок которые хотят нам навредить, передовая файлы в открытом виде.
    У меня версия PHP 5.6 не собралась, собирались версии от PHP 7.0.32 и старше.
    Как собрать PHP 5.6 я копать не стал, так как уже очень скоро она поддерживаться перестанет. Если вы знаете как собрать PHP 5.6 делитесь информацией.

    Далее следуйте вот этой инструкции, предварительно перейдя в каталог /home пользователя root

    Это будет выглядеть вот так ( root@имя вашей машины:/home# )

    https://pupi-boy.ru/web-server/vestacp-versii-php-debian-ubuntu.html если вы читаете этот комментарий значит вы уже здесь

    В заключение подчистите опилки и прочий мусор, который остался после работы пилой и напильником

    # apt-get autoremove && apt-get autoclean

    Обновите параметры загрузчика и ядра

    # update-initramfs -u

    # update-grub2

    Перезагрузите систему !

  • Для версии 5.3.29 phpinfo выдаёт такое рсположение php.ini

    Loaded Configuration File (none)

  • после установки
    имею в логах ошибку
    PHP Warning: Module 'ionCube Loader' already loaded in Unknown on line 0

    • Решил проблему? Такая же беда.

      • /opt/php/php-5.3.29/etc/conf.d/ext.ini закоментировал строку с инициализацией ioncube

  • При установке php 5.6.30 выдает ошибку configure: error: Please reinstall the libcurl distribution -
    easy.h should be in /include/curl/
    Подскажите, как решить?

    • Попробуйте sudo apt-get install libcurl4-openssl-dev

    • Добрался я до этого скрипта, видимо Debian 9 не поддерживается. Пытался установить 7.2 выдает вашу ошибку, при ее устранении появляются и другие стандартные ошибки компилировании PHP.

      Помогла доустановка зависимостей и простое гугление этих ошибок:

      apt-get install libxml2-dev libssl-dev libpcre3 libpcre3-dev zlib1g-dev libbz2-dev libjpeg-turbo8-dev libjpeg-dev libpng-dev ibfreetype6-dev libonig-dev libpspell-dev libreadline-gplv2-dev libxslt-dev; cd /usr/include; ln -s x86_64-linux-gnu/curl
  • В процессе установки скрипт не предложил "Создавать шаблон VestaCP для каждой указанной версии? Нажимаем да У" соответственно новые шаблоны в Весте не появились.
    Enter php version/versions(for example 5.6.30):
    >5.3.1 5.4.10 5.6.0
    Create simlinks in /usr/bin?(y/N)
    >N
    If you select 'No', then you need to set the dependencies yourself. Otherwise, the installation will fail.
    Install packages and dependencies?(y/N)
    >y
    Start the installation of packages and dependencies. Please wait...
    При этом дополнительные версии PHP установились, судя по логам. Как-то можно вручную создать шаблоны или исправить?

    • На самом деле, про темплейты вас не спрашивает, потому что вы на вопрос про создание линков ("Create simlinks in /usr/bin?(y/N)") ответили "N". Судя по скрипту, для создания темплейтов обязательно должны создаваться линки.

  • Спасибо, потрясающий скрипт.
    И обьяснили доступно все
    Я только начал работать с выделенным сервером, ваша статья была очень полезна.
    Спасибо

  • Это работает только на 64 разрядности, на 32 не пашет, выдаёт ошибку:
    checking for pkg-config... /usr/bin/pkg-config
    configure: error: Cannot find OpenSSL's libraries
    Кто подскажет как установить?

  • Ставил php7 на Debian 7 c VestaCP, сконфигурированную без Апача (nginx+fpm). Оно ругнулось в конце (см.ниже).
    В opt/php/ - 650Мбайт этого самого php есть. А как его заставить работать на сайте и добавить в Весту - не знаю. 🙁
    Подскажите, пожалуйста.

    mgrvphp: line 152: apachectl: command not found
    mgrvphp: line 155: a2enmod: command not found
    apache2: unrecognized service
    mgrvphp: line 164: apachectl: command not found

  • Ребят, подскажите как в 2к17 поставить memcache для php5.
    P.S. спасибо за скрипт, очень помогло

    • может?

      apt-get install memcached php5-memcache
      • Я конечно тупой, но не на столько.
        Unable to locate package php5-memcache
        ubuntu 16
        Поэтому и спрашиваю, в стандартных репозиториях php 5 нету уже давно.

  • Насколько велик риск что-то сломать? Стоит ли запускать данный скрипт на боевой машине?

    • Небольшой риск есть всегда, советую поставить стразу на тестовую машину, если есть какая-то неуверенность. У меня проблем не возникало.

  • Здравствуйте.
    Спасибо за статью. Очень помогла!
    А можете подсказать, где найти файлы php.ini каждой из версий?
    Заранее благодарен!

    • В phpinfo должно быть написано. Вот пример:
      Phpinfo

  • Статья отличная, однако подобная уже есть.
    https://anikin.pw/all/menedzher-versiy-php/
    В целом в блоге много тематической инфы, в том числе достаточно редкой. Автору спасибо!

    • Аникин - является создателем этого менеджера, но мне не нравится как он пишет. На счет редкой инфы - это зачастую придуманное мною решение проблемы. Сюда можно отнести вторую часть статьи про активацию файлового менеджера и статью про персонализацию панели.

Оставить комментарий

* Возможна анонимная отправка комментария.

Согласен с политикой конфиденциальности *