ShadowOfCasper
@ShadowOfCasper
Middle User Interface Web Developer

Где найти и как установить PHP 5.4 на Ubuntu 16.04?

Всем привет, ребят, мне очень нужна помощь. Сайт перенёс с сервера centOS (php 5.4) на локалку убунты. Самую старую версию из доступных в репах - php5.6 - я поставил её, но сайт не хочет нормально заводиться. В основном причина сбоев в обработке данных одна и таже - "метод шуд нот би солд статикали" - ну вы поняли. Сайт крупный (гигов 5, не считая кэша), на битриксе. скрипты подкачивают компоненты с разных уголков веб-сервера. Подобные ошибки встречаются очень часто и постоянно лазать в исходники и ставить @ перед невыполненным методом уже надоело.
В php 5.4 ошибок этих нет и всё пашет норм, но поставить никак не могу. Уже весь гугл обыскал.
Самую старую репу, которую нашёл https://launchpad.net/~ondrej/+archive/ubuntu/php5... , но даже после её добавления и апдейта апт мне пишет "Для пакета «php5» не найден кандидат на установку"

Пакет собрал и установил, с php.net, он установился в usr/local/lib/php, хотя те версии, что я ставил через апт, падали в etc/php.
php -v мне выводит 5.4.45 , а phpinfo() - 5.6
Подскажите, как изменить версию php в апаче (2.4)? перезапускать его пробовал - без изменений.
Всем заранее спасибо.
  • Вопрос задан
  • 3531 просмотр
Решения вопроса 1
romeOz
@romeOz
Конечно, можно заморочиться и собрать PHP из исходников. Кроме того, вам придётся собрать и Apache из исходников с добавлением модуля PHP (libapache2-mod-php).
К сожалению или к счастью, у большинства разработчиков навык сборки чего-либо из исходников безвозмездно утрачен. Разве что расширения для того же PHP (pecl) иногда приходится собирать.
Как вариант, предлагаю воспользоваться такой замечательной штукой, как контейнеризация, а именно Docker-ом. На текущий момент времени, это наиболее изящное и правильное решение. В приведённый ниже пример добавил линкование с СУБД MySQL

docker network create mysql_net

docker run --name app --net mysql_net -d -p 8080:80 \
  -v /host/to/path/app:/var/www/app/ \
  -v /host/to/path/config_apache:/etc/apache2/sites-enabled/ \
  romeoz/docker-apache-php:5.4

, где
  • /host/to/path/app - путь к директории с вашим приложением (от корня), в данном случае, CMS Битрикс
  • /host/to/path/config_apache - путь к директории с вашим apache-конфигом. Можете посмотреть, как выглядит базовый файл конфигурации

Далее, поднимем контейнер с СУБД:

docker run --name db --net mysql_net -d \
  -v /host/to/path/data:/var/lib/mysql \
   romeoz/docker-mysql:5.5

, где /host/to/path/data - директория с вашими данным (БД).

В CMS Битрикс в качестве хоста в настройках БД, необходимо указать db, т.к. контейнер СУБД имеет такое имя - --name db.
Ваше приложение будет доступно по адресу http://localhost:8080. Для красоты можете задать в /etc/hosts свой домен, к примеру, 127.0.0.1:8080 myapp.
Если вы привыкли править БД с помощью web-клиента phpmyadmin, то вот здесь есть инструкция, как поднять официальный контейнер и для него. На вашем месте я бы воспользовался иным другим клиентом - свободным или не свободным. К примеру, во всех продуктах от JetBrains, в том числе, и в IDE PHPStorm, встроен отличный инструмент DataGrip, ранее известный, как 0xDBE.

Естественно, есть необходимость в этом немного разобраться, но, поверьте, оно того стоит. За этим подходом будущее. Плюс не придётся засирать свою хост-систему всяким мусором, ведь контейнер всегда можно убить, а образ породивший его удалить.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Scorpi
@Scorpi
Скорее всего вам придётся откатится на Ubuntu 14.04
PHP 5.4 уже не поддерживается, и поставить его его на 16.04 без костылей и велосипедов не получится.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽