Требуется установить на сервер 18.04 php5.3.
Глобально задача состоит в переносе серверного ПО (web2project
https://web2project.net + модуль, который еще в 2014 году, нам писал хороший программер). Сейчас это w2p+модуль крутится на старом NAS, работает жутко медленно и всех в контре это раздражает, на NAS версия php 5.3.14.
Без танцев с бубном на 18.04 сервер ставится php5.6:
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt install php5.6
sudo a2dismod php7.2
sudo a2enmod php5.6
sudo /etc/init.d/apache2 restart
На php5.6 работает w2p, но не работает дополнительно написанный модуль, который нужен в конторе.
С php5.3, сложности:
sudo add-apt-repository ppa:ondrej/php5-oldstable
Cannot add PPA: 'ppa:~ondrej/ubuntu/php5-oldstable'.
The user named '~ondrej' has no PPA named 'ubuntu/php5-oldstable'
Please choose from the following available PPAs:
* 'apache2': PPA for Apache 2.x
* 'apache2-qa': PPA for Apache2 (QA builds; experimental)
* 'autotools': PPA for autotools (not-supported; build-dependency; experimental)
* 'bind9': PPA for BIND 9
* 'cmake': PPA for CMake (not-supported, experimental)
* 'common': Common PPA packages
* 'cyrus-imapd': PPA for Cyrus IMAP
* 'debhelper': PPA for Debhelper (and friends)
* 'golang': PPA for Go (experimental, build-dependency)
* 'llvm': PPA for LLVM
* 'mariadb-10.0': PPA for MariaDB 10.0 (don't use, broken)
* 'mysql-5.5': PPA for MySQL 5.5 (don't use, broken)
* 'mysql-5.6': PPA for MySQL 5.6 (don't use, broken)
* 'mysql-5.7': PPA for MySQL 5.7 (don't use, broken)
* 'nginx': PPA for NGINX with HTTP/2
* 'nginx-mainline': PPA for NGINX Mainline with HTTP/2
* 'nginx-qa': PPA for NGINX Mainline (QA builds; experimental)
* 'pelican': PPA for Pelican
* 'php': ***** The main PPA for supported PHP versions with many PECL extensions *****
* 'php-qa': PPA for PHP (QA builds; experimental)
* 'php-zts': PPA for PHP ZTS (experimental, unsupported)
* 'php5-compat': PPA with dummy compatibility php5* packages
* 'pkg-dpkg': dpkg and friends (very experimental)
* 'pkg-gearman': PPA for Gearman
* 'pkg-nlnetlabs': NLNetLabs Backported Packages
* 'sandbox': Sandbox for preparation of various packages (DON'T USE)
* 'seafile': PPA for Seafile
* 'unbound': PPA for Unbound (mainly a build-dep)
* 'zonemaster': PPA for Zonemaster
Также пытался собрать из исходников, скачивал с сайта
http://php.net/releases/ пакет php-5.3.14.tar.gz, делал все обычные для этого манипуляции, на этапе make вылазит ошибка:
/home/pmserver/mountf/php-5.3.14/ext/dom/node.c: In function ‘dom_canonicalization’:
/home/pmserver/mountf/php-5.3.14/ext/dom/node.c:1898:21: error: dereferencing pointer to incomplete type ‘xmlBuf {aka struct _xmlBuf}’
ret = buf->buffer->use;
^~
Makefile:549: recipe for target 'ext/dom/node.lo' failed
make: *** [ext/dom/node.lo] Error 1
Также пробовал вариант с с phpbrew:
phpbrew install 5.3.14 +default
===> phpbrew will now build 5.3.14
PHP 5.3 requires +intl, enabled by default.
===> Loading and resolving variants...
Checking distribution checksum...
Checksum mismatch: 7caac4f71e2f21426c11ac153e538392 != 370be99c5cdc2e756c82c44d774933c8
Re-Downloading...
Downloading http://museum.php.net/php5/php-5.3.14.tar.bz2 via php stream
===> Distribution file was successfully extracted, skipping...
Found existing Makefile, running make clean to ensure everything will be rebuilt.
You can append --no-clean option after the install command if you don't want to rebuild.
===> Running make clean: /usr/bin/make -C '/home/pmserver/.phpbrew/build/php-5.3.14' --quiet 'clean'
===> Checking patches...
Checking patch for replace apache php module name with custom version name
Found existing build.log, renaming it to /home/pmserver/.phpbrew/build/php-5.3.14/build.log.1551335251
===> Configuring 5.3.14...
Use tail command to see what's going on:
$ tail -F /home/pmserver/.phpbrew/build/php-5.3.14/build.log
===> Checking patches...
Checking patch for php5.3.29 multi-sapi patch.
Checking patch for php5.3.x on 64bit machine when intl is enabled.
3 changes patched.
Checking patch for openssl dso linking patch
===> Building...
Error: Make failed:
The last 5 lines in the log file:
/usr/include/openssl/rand.h:44:1: note: declared here
DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num))
^
Makefile:480: recipe for target 'ext/openssl/openssl.lo' failed
make: *** [ext/openssl/openssl.lo] Error 1
Please checkout the build log file for more details:
tail /home/pmserver/.phpbrew/build/php-5.3.14/build.log
В сети пишут, что это из-за openssl и libssl-dev, в системе они 1.1, а для сборки php ниже 5.6 нужны 1.0. Я пытался осуществить даунгред в т.ч.
sudo apt-get install openssl=1.0.2*/
sudo apt-get install libssl-dev=1.0.2*/
пытался поставить из deb, скачал пакеты libssl-dev_1.0.2l-1~fwp9+2_amd64.deb и openssl_1.0.2l-1~fwp9+2_amd64.deb, но вываливается такое:
sudo dpkg -i libssl-dev_1.0.2l-1~fwp9+2_amd64.deb
dpkg: предупреждение: снижение версии libssl-dev:amd64 с 1.1.1a-2+ubuntu18.04.1+deb.sury.org+1 до 1.0.2l-1~fwp9+2
dpkg: относительно libssl-dev_1.0.2l-1~fwp9+2_amd64.deb, содержащего libssl-dev:amd64:
libcurl4-openssl-dev:amd64 конфликтует с libssl-dev (<< 1.1)
пакет libssl-dev:amd64 версии 1.0.2l-1~fwp9+2 будет установлен.
dpkg: ошибка при обработке архива libssl-dev_1.0.2l-1~fwp9+2_amd64.deb (--install):
конфликт пакетов — libssl-dev:amd64 не будет установлен
При обработке следующих пакетов произошли ошибки:
libssl-dev_1.0.2l-1~fwp9+2_amd64.deb
Существует и радикальное решение задачи, перейти на облачный сервис, где имеется требуемый функционал и цена приемлемая, но это связано с переносом всей базы в облако в другое ПО, в общем директор на это не решается. Вариант запуска w2p c нашим модулем на 18.04 сервере пока насущная задача.
Можно попробовать переписать синтаксис модуля, чтоб работал на php5.6 (на php7.0 и выше наитивный w2p уже не пашет), но пока хочется просто запустить 18.04 сервер и php5.3, а для этого нужно сделать даунгред openssl до 1.0.
Вопрос: как это сделать, а именно на 18.04 сервере понизить версию openssl c 1.1 до 1.0. Есть простое решение?