Backward incompatible changes

Although most existing PHP 5 code should work without changes, please take
note of some backward incompatible changes:

Array keys won't be overwritten when defining an array as a property of a class via an array literal

Previously, arrays declared as class properties which mixed explicit and
implicit keys could have array elements silently overwritten if an explicit
key was the same as a sequential implicit key. For example:

json_decode() now rejects non-lowercase variants of the
JSON literals true, false and
null at all times, as per the JSON specification, and
sets json_last_error() accordingly. Previously, inputs
to json_decode() that consisted solely of one of these
values in upper or mixed case were accepted.

This change will only affect cases where invalid JSON was being passed to
json_decode(): valid JSON input is unaffected and will
continue to be parsed normally.

Stream wrappers now verify peer certificates and host names by default when using SSL/TLS

All encrypted client streams now enable peer verification by default. By
default, this will use OpenSSL's default CA bundle to verify the peer
certificate. In most cases, no changes will need to be made to communicate
with servers with valid SSL certificates, as distributors generally
configure OpenSSL to use known good CA bundles.

The default CA bundle may be overridden on a global basis by setting
either the openssl.cafile or openssl.capath configuration setting, or on a
per request basis by using the
cafile or
capath
context options.

While not recommended in general, it is possible to disable peer
certificate verification for a request by setting the
verify_peer
context option to FALSE, and to disable peer name validation by setting
the verify_peer_name
context option to FALSE.

GMP resources are now objects. The
functional API implemented in the GMP extension has not changed, and code
should run unmodified unless it checks explicitly for a resource using
is_resource() or similar.

Beware, now default_charset in PHP 5.6 is UTF-8, instead of blank value like in previous versions. So if you use 8-bit charset like iso-8859-1 then your non-ascii characters will be broken until you explicitly set default_charset to blank value or to your actual character set. HTML meta tag doesn't work anymore because HTTP headers have more proirity over them. And Apache AddDefaultCharset directive has lower proirity too.