CYBER WEEK SALE - 50% OFF ALL HOSTING PLANS
50% OFF ALL NEW PLANS

Common problems when switching from PHP 5.3 to PHP 5.6

PHP versions over 5.3 introduced some major changes and backward incompatibilities. That's why making older software compatible with PHP 5.4+ can be troublesome sometimes.

You can read more about the available PHP versions on our servers in the PHP Version article.

Generally, if you are using a popular third-party software such as WordPress, Joomla, Drupal, or similar, what you need to do is to make sure that your software and all its modules/themes/plugins are updated to their latest versions. The developers of such software usually do that is needed to make their software compatible with newer PHP versions.

If you are using custom software, you must make sure that it is compatible with PHP versions over 5.4. Below you can find some problems that we have found as most common when switching between PHP 5.3 to 5.6.

register_globals and magic_quotes not supported

The register_globals and magic_quotes settings are no longer supported. Attempts to enable any of the two, either in a php.ini file or through an ini_set() function, will raise an error. If your software relies on register_globals or magic_quotes, it should be rewritten.

Date/Timezone issues

As of PHP 5.4, the server timezone is no longer automatically guessed in PHP, and it should be explicitly set. This should be done either in a php.ini file, or in the code of the software.

PHP encoders/decoders

If your software requires a PHP encoder/decoder to run (such as Zend Guard Loader or ionCube), you would need to obtain a version of your software for PHP 5.6. Please contact your software vendor about that. Also, you must make sure that you have the correct decoder binary set in the PHP settings for your account. More information about Zend Guard Loader and ionCube can be found in the Using Zend Guard Loader and Using ionCube articles.

Error reporting level

E_STRICT is now a part of E_ALL. If the error_reporting of your PHP settings is set to display E_ALL errors, this means that E_STRICT errors will now be displayed as well. You can suppress this by adjusting the error_reporting settings in your php.ini file to exclude E_STRICT.

The developers of PHP have listed the backward incompatibilities between PHP 5.3 and PHP 5.4 here:

http://php.net/manual/en/migration54.incompatible.php

Lists of the functions and features deprecated in PHP 5.5 and PHP 5.6 can be found at:

http://php.net/manual/en/migration55.incompatible.php
http://php.net/manual/en/migration56.incompatible.php