
Поскольку мне пришлось обновиться до TLS1.2, мне пришлось обновиться до OpenSSL 1.0.1 или выше. Для этого мне пришлось обновиться с Ubuntu 10.04 до Ubuntu 16.04
В Ubuntu 10.04 было
PHP 5.3.2
MySQL 5.1.66
Apache 2.2.14
OpenSSL 0.9.8
Ubuntu 16.04 имеет
PHP 7.0.18
MySQL 5.7.18
Apache 2.4.18
OpenSSL 1.0.2
Как и ожидалось, у меня сейчас OpenSSL 1.0.2, но сайт теперь не работает, потому что версия PHP обновлена до 7.0.18. Теперь у меня есть несколько вопросов
- Могу ли я установить PHP 5.3.2 отдельно и запустить его? Если да, будет ли он использовать TLS 1.2?
- Или если мне нужно удалить PHP 7, чтобы установить PHP 5.3.2, OpenSSL также будет понижен до версии?
- MySQL устарела из-за какой-то версии PHP (я не знаю, какой именно версии PHP/MySQL). Поскольку моя версия MySQL также обновилась, могу ли я получить доступ к MySQL из PHP 5.3.2?
Я знаю, что PHP 5.3 устарел. Но мне нужна эта версия сейчас, чтобы запустить мой код, но с TLS 1.2.
Короче говоря, мне нужно
PHP 5.3.2 с доступом к MySQL + TLS1.2(>openssl 1.0.1) + Ubuntu 16.04.
Как этого добиться?
решение1
Многое зависит от того, хотите ли вы использовать только официально поддерживаемые пакеты.
Ничто не мешает вам удалить пакет PHP 7 и скомпилировать PHP 5.3.2 самостоятельно и связать его с OpenSSL 1.0.2, если у вас есть знания о том, как это сделать. Это может быть легко или сложно в зависимости от изменений API в зависимостях. Хотя, вероятно, стоит использовать 5.3.29, который, как я понимаю, должен быть совместим с вашим кодом 5.3.2, но иметь несколько дополнительных исправлений.
http://www.php.net/releases/#5.3.29
Я бы проверил проблемы безопасности, которые возникли после релиза, прежде чем выкладывать его в сеть. Он больше не поддерживается IIUC, так что вам придется самостоятельно его патчить.
Из-за отсутствия исправлений безопасности я бы также рекомендовал обновить кодовую базу до чего-то более нового как можно скорее. PHP публикует руководства по миграции (например,http://php.net/migration54) и вы можете следить за каждым из них, пока вам снова не окажут поддержку.
Лично мне не известны какие-либо пакеты (официальные или иные), которые позволили бы вам избежать необходимости компилировать самостоятельно.
решение2
PHP 5.3 достиг EOL. Кроме того, я думаю, что нет поддерживаемого репозитория/дистрибутива с активной поддержкой 5.3.
Я думаюединственная хорошая ставкамигрирует ваш код на поддерживаемую версию PHP или как минимум 5.4/5.5. Вы можете найти официальные руководства по миграции PHPздесь.
В любом случае,если вам нужен грязный обходной путь, у вас, вероятно, есть два основных варианта:
- Скомпилируйте сами
- Используйте третью сторонуппа,виртуальная машинаиликонтейнер
Если вы хотите скомпилировать его самостоятельно(со всеми возможными хлопотами), связываясь с более новой версией OpenSSL и решая потенциальные проблемы, которые могут возникнуть, как упомянул @user133831, вы можете следовать инструкциям наэтот ответ.
Если вы хотите избежать компиляции и хотите использоватьппа, вы можете попробовать установить с помощьюСергейД один. Проверьте инструкции ppa, чтобы установить соответствующие модули PHP.
Я также видел определенные сторонние контейнеры Docker для PHP 5.3 на основе старых версий Ubuntu, таких как 12.04 и 12.10.(также и со старыми версиями OpenSSL). Однако вы можете попробовать(и выбросьте его после этого)контейнер docker, чтобы увидеть, подходит ли он для вашей проблемы. Возможно, вы захотите взглянуть на эти ссылки:PHP 5.3 с нуля Dockerfile,Образ PHP 5.3 Docker
Какой бы вариант вы ни выбрали, я предлагаю выполнять все «грязные» вещи внутри виртуальной машины или контейнера lxc/lxd/docker.(по крайней мере, сначала), чтобы не слишком портить основную систему.
В любом случае, если вы решите остаться с PHP 5.3, имейте в виду, что, скорее всего, вы закончите с другими"побочные эффекты", такие как проблемы с MYSQL API в новых версиях, ошибки и несовместимости, исправленные в новых версиях, и, конечно же,потенциальные уязвимости безопасности.
Надеюсь, поможет.
решение3
16.04 мне удалось принудительно понизить версию libssl-dev с помощью этой команды:
apt-get install libssl-dev=1.0.2*
Мне удалось скомпилировать php 5.3.29 с помощью phpbrew с помощью следующей команды после установки множества пакетов lib*-dev:
phpbrew install 5.3.29 +everything -fpm +apxs2 -cli -cgi -phpdbg -dtrace -opcache -embed -gcov
У меня также был установлен ondrej/php ppa, возможно, это сыграло свою роль, хотя на самом деле он должен устанавливать только php 5.6.x, так что я не уверен.