Upgrade PHP

Matthew Seaman m.seaman at infracaninophile.co.uk
Sat Jul 22 08:03:23 UTC 2006


mamrg wrote:
> Hi,
> 
> First of all my apologies for the lame question, but i have this FreeBSD
>  server in which i have to upgrade PHP from 4 to 5.
> 
> I've read about the ports, but got a little confused.

> Can you tell me please how can i make the update ?

Hmmm... this will take a little more effort than is usual when dealing
with the ports.  But not a huge amount more.

First, identify all of the ports that use php -- you want anything that
is a dependency of the core lang/php4 port.  You need a command something
like the following, except you will have to alter the version number to
match what you have installed:

    % pkg_info -R php4-4.X.Y

Something like this:

    % pkg_info -R php4-4.4.2_1 
    Information for php4-4.4.2_1:

    Required by:
    oscommerce-2.2r2
    pecl-pdflib-2.0.4
    php4-bz2-4.4.2_1
    php4-gd-4.4.2_1
    php4-mbstring-4.4.2_1
    php4-mcrypt-4.4.2_1
    php4-mysql-4.4.2_1
    php4-pcre-4.4.2_1
    php4-session-4.4.2_1
    php4-zlib-4.4.2_1
    phpMyAdmin-2.8.0.3

This will get you the right list of ports to deal with.  Now, you need to
replace each of those ports called 'php4-something' with the equivalent
'php5-something' port.  You need to do the base php port first:

    % cd /usr/ports/lang/php5
    % make config                           (Note: make sure 'Apache' is checked here)
    % portupgrade -f -o lang/php5 php4-4.4.2_1

Remember to tweak that version number to match what is on your own system.
After you've done that, there should be a file /usr/local/etc/php.conf
that contains the following:

    % cat /usr/local/etc/php.conf
    PHP_VER=5
    PHP_VERSION=5.1.4
    PHP_SAPI=cli cgi mod

Now go ahead and replace all of the php4 modules with their php5
equivalents.  You need to find the origin of each php4 module, and then
translate it into the php5 equivalent. eg:

    % pkg_info -o php4-mysql-4.4.2_1
    Information for php4-mysql-4.4.2_1:

    Origin:
    databases/php4-mysql
    % portupgrade -o databases/php5-mysql php4-mysql-4.4.2_1

Do that for each of the php4-something modules.

Next, and somewhat optionally, reinstall all of the PECL libraries and
PHP applications you've installed.  ie. anything on that list of
dependencies without the php4- prefix.  This isn't strictly necessary for
anything that is pure PHP code and that involves no compiled stuff, but
it shouldn't hurt. eg:

    % portupgrade -f pecl-pdflib-2.0.4
    % portupgrade -f phpMyAdmin-2.8.0.3
    % portupgrade -f oscommerce-2.2r2 

> Is it necessary to mess with Apache too ?

Yes.  You should stop apache before starting on this whole exercise,
obviously.  Before you fire it up again, you need to make sure that
it is loading the PHP5 module rather than the PHP4 one.

Check for lines like this in the apache config files:

    LoadModule php5_module        libexec/apache22/libphp5.so

(Again, mutatis mutandem depending on the version of Apache you're
running)

The Apache config files may well be automagically edited for you,
but the 'LoadModule' line could well have been put in commented out,
which you'll want to uncomment.

Then fire up Apache and test, test, test until you're sure everything
is working OK.

	Cheers,

	Matthew

-- 
Dr Matthew J Seaman MA, D.Phil.                       7 Priory Courtyard
                                                      Flat 3
PGP: http://www.infracaninophile.co.uk/pgpkey         Ramsgate
                                                      Kent, CT11 9PW

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 250 bytes
Desc: OpenPGP digital signature
Url : http://lists.freebsd.org/pipermail/freebsd-questions/attachments/20060722/cfa23587/signature.pgp


More information about the freebsd-questions mailing list