I have compiled the latest PHP version, 5.3.29, and put it in the Webtatic repository for easy installation. It is compiled for CentOS 5 i386 and x86_64, and the source RPMS are provided in the repo, if anyone wants to compile it for another OS or architecture.
To install, first you must install the yum repository information:
rpm -Uvh http://mirror.webtatic.com/yum/centos/5/latest.rpm
Now you can install php by doing:
yum --enablerepo=webtatic install php
Or update an existing installation of php, which will also update all of the other php modules installed:
yum --enablerepo=webtatic update php
|php-cli||php-cgi, php-pcntl, php-readline|
|php-common||php-api, php-bz2, php-calendar, php-ctype, php-curl, php-date, php-exif, php-fileinfo, php-ftp, php-gettext, php-gmp, php-hash, php-iconv, php-json, php-libxml, php-openssl, php-pcre, php-pecl-Fileinfo, php-pecl-phar, php-pecl-zip, php-reflection, php-session, php-shmop, php-simplexml, php-sockets, php-spl, php-tokenizer, php-zend-abi, php-zip, php-zlib|
|php-mysql||php-mysqli, php-pdo_mysql, php_database|
|php-process||php-posix, php-sysvmsg, php-sysvsem, php-sysvshm|
|php-xml||php-dom, php-domxml, php-wddx, php-xsl|
If you get depsolving problems when updating, you may have currently installed some extensions that have been removed, e.g. php-mhash, php-ncurses.
You will need to remove them before upgrading.
yum remove php-mhash php-ncurses
If you have not set the default timezone for dates, you will get PHP warnings and in some cases fatal errors (e.g. when using the DateTime object). PHP will by default use the system’s timezone if not a fatal error, however either in your application or the php.ini, you should set the setting date.timezone. It’s more ideally set in the application, which should be aware of it’s own timezone setting.
Once you are running the new version, you may get “deprecated” errors in your error logs. This isn’t bad, it just means to tell you that some of the functions you are using are no longer prefered, and may be removed in a future major release. An example of this is the ereg functions. Preg functions are prefered over these, as they are much faster and more powerful, and in all cases do at least the same thing.
If upgrading the functions are not an option, and you would like to hide the deprecated errors from your error log, for example on a production server, just edit your /etc/php.ini file, find the line:
error_reporting = E_ALL
and replace to:
error_reporting = E_ALL & ~E_DEPRECATED
I have previously been maintaining PHP 5.2.* releases, but since it is now end-of-line, there are no security fixes for known critical security issues. I wouldn’t recommend using these anymore because of this, however they are still in the repository for existing users relying on them.