Ubuntu 14.04 con Apache & PHP 5.3

By | 26 March 2021

Una delle difficoltà che ho incontrato durante il mio lavoro è quello di abilitare il protocollo https/tls 1.2 per vecchie applicazioni realizzate con PHP 4.4. La cosa più ovvia sarebbe quella di aggiornare/rifare l’applicazione con una versione più recente di PHP, ad esempio la 5.6 o meglio ancora con una 7.4 o 8.0. Tuttavia non è sempre possibile, vuoi perché il cliente non può permettersi di spendere per aggiornarla, vuoi perché si tratta di un’applicazione che interagisce con sistemi Legacy, vuoi perché è già in corso la realizzazione di una versione della stessa ma per il momento quella vecchia deve continuare a funzionare.

Dopo aver installato la versione server di Ubuntu 14.04 (versione 32 o 64 bit), installare i seguenti pacchetti

apt-get install build-essential libxml2-dev apache2 apache2-dev libssl-dev libsslcommon2-dev libbz2-dev libcurl4-gnutls-dev libpng12-dev libgmp-dev libmcrypt-dev libtidy-dev libxslt1-dev libltdl-dev libjpeg-dev libgif-dev libmysqlclient-dev libmysqlclient18 icu-devtools libicu-dev 

Scaricare l’ultima versione di php5.3 e decomprimere.

./configure --with-libdir=lib/i386-linux-gnu --with-apxs2 --with-openssl --with-pcre-regex --with-zlib --enable-bcmath --with-bz2 --enable-calendar --with-curl --enable-exif --enable-ftp --with-gd --enable-gd-native-ttf --with-gettext --with-gmp --with-mhash --enable-intl --enable-mbstring --with-mcrypt --with-mysql --with-mysql-sock --with-mysqli --enable-pcntl --with-pdo-mysql --enable-sockets --with-tidy --enable-wddx --with-xmlrpc --with-xsl --enable-zip --with-png-dir --with-jpeg-dir

In caso di versione dell’os a 64 bit modificare il parametro –with-libdir=lib/x86_64-linux-gnu .

Aggiungere alla riga che inizia per “EXTRA_LIBS” il valore “-lstdc++” (si può mettere come primo parametro). Senza questo valore da questo errore durante la compilazione:

error adding symbols: DSO missing from command line

Questa è la riga dopo la modifica

EXTRA_LIBS = -lstdc++ -lcrypt -lz -lexslt -ltidy -lresolv -lcrypt -lrt -lmysqlclient ...

Infine procedere con la compilazione e l’installazione.

make
make test
make install

Copiare il file php.ini di produzione nella directory corretta e fare le modifiche necessarie.

cp /opt/php-source/php-5.3.29/php.ini-production /usr/local/lib/php.ini

Durante l’installazione non viene creato il file di configurazione che aggiunge il tipo .php ad Apache. Creare quindi il file /etc/apache2/mods-available/php5.conf con il seguente contenuto

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .php

Disattivare e riattivare il modulo php e riavviare apache.

a2dismod php5
a2enmod php5
service apache2 restart

Enjoy!