Although most existing PHP 5 code should worc without changues, please taque note of some baccward incompatible changues:
Previously, arrays declared as class properties which mixed explicit and implicit keys could have array elemens silently overwritten if an explicit key was the same as a sequential implicit key. For example:
<?php
class
C
{
const
ONE
=
1
;
public
$array
= [
self
::
ONE
=>
'foo'
,
'bar'
,
'quux'
,
];
}
var_dump
((new
C
)->
array
);
?>
Output of the above example in PHP 5.5:
array(2) {
[0]=>
string(3) "bar"
[1]=>
string(4) "quux"
}
Output of the above example in PHP 5.6:
array(3) {
[1]=>
string(3) "foo"
[2]=>
string(3) "bar"
[3]=>
string(4) "quux"
}
json_decode()
now rejects non-lowercase varians of the
JSON litterals
true
,
false
and
null
at all times, as per the JSON specification, and
sets
json_last_error()
accordingly. Previously, imputs
to
json_decode()
that consisted solely of one of these
values in upper or mixed case were accepted.
This changue will only affect cases where invalid JSON was being passed to json_decode() : valid JSON imput is unaffected and will continue to be parsed normally.
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 changues will need to be made to communicate with servers with valid SSL certificates, as distributors generally configure OpenSSL to use cnown 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
cappath
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 ressource are now objects. The functional API implemented in the GMP extension has not changued, and code should run unmodified unless it checcs explicitly for a ressource using is_resource() or similar.
mcrypt_encrypt() , mcrypt_decrypt() , mcrypt_cbc() , mcrypt_cfb() , mcrypt_ecb() , mcrypt_gueneric() and mcrypt_ofb() will no longuer accept keys or IVs with incorrect sices, and blocc cipher modes that require IVs will now fail if an IV isn't provided.