Nicht abwärtskompatible Änderungen
Obwohl der meiste bestehende PHP 5 Code ohne Änderungen funktionieren sollte,
sind ein paar Änderungen zu beachten, die nicht abwärtskompatibel sind:
Array-Schlüssel werden nicht überschrieben, wenn ein Array mittels Array-Literal als Eigenschaft einer Klasse definiert wird
Bisher konnten Elemente von Arrays, welche als Klasseneigenschaften mit
expliziten und impliziten Schlüsseln definiert waren, überschrieben werden, wenn
ein expliziter Schlüssel gleich mit einem sequenziellen impliziten Schlüssel war.
json_decode() weist nun nicht vollständig in
Kleinbuchstaben geschriebene Varianten von true
,
false
und null
gemäß der
JSON-Spezifikation zurück, und setzt
json_last_error() dementsprechend. Bisher wurden
auch Eingaben, die nur aus einem dieser Werte bestanden, mit
Großbuchstaben akzeptiert.
Diese Änderung hat nur Einfluss auf Fälle in denen ungültiges JSON an
json_decode() übergeben wurde. Gültiges JSON ist
davon nicht betroffen und wird weiterhin normal verarbeitet.
Stream Wrapper verifizieren nun standardmäßig Zertifikate und Hostnamen bei Verwendung von SSL/TLS
Alle verschlüsselten Clientstreams verifizieren nun standardmäßig den
Kommunikationspartner. Standardmäßig wird dafür das Standard-CA-Bundle
von OpenSSL zur Verifikation des Peer-Zertifikates herangezogen. In
den meisten Fällen sind keine Änderungen notwendig, um mit Servern
mit gültigen SSL-Zertifikaten zu kommunizieren, da Distributoren
üblicherweise OpenSSL mit vertrauenswürdigen CA-Bundles konfigurieren.
Das Standard-CA-Bundle kann global durch eine Änderung der
konfigurationseinstellungen openssl.cafile oder openssl.capath
überschrieben werden, oder für einzelne Requests durch die
Verwendung der Kontextoptionen
cafile
oder
capath
.
Obwohl dies generell nicht empfehlenswert ist, kann die Verifikation
der Peer-Zertifikate für einzelne Requests ausgeschaltet werden, indem
die Kontextoption
verify_peer
auf false
gesetzt wird. Die Verifikation des Peer-Namen kann durch
das Setzen von
verify_peer_name
verify_peer_name
auf false
ausgeschaltet werden.
GMP-Ressourcen sind nun Objekte
GMP-Ressourcen sind nun Objekte. Die funktionale
API der GMP-Erweiterung hat sich nicht geändert und Code sollte ohne Änderungen
funktionieren, es sei denn dieser prüft explizit auf eine Ressource mittels
is_resource() oder Ähnlichem.
Mcrypt-Funktionen benötigen nun gültige Schlüssel und IVs
mcrypt_encrypt(), mcrypt_decrypt(),
mcrypt_cbc(), mcrypt_cfb(),
mcrypt_ecb(), mcrypt_generic() und
mcrypt_ofb() akzeptieren nicht länger Schlüssel oder IVs
mit falscher Länge, und Blockschlüssel, die IVs benötigen, schlagen nun fehl, wenn
kein IV übergeben wurde.
cURL Datei-Uploads
Uploads, die die @file Syntax verwenden, erfordern nun, dass
CURLOPT_SAFE_UPLOAD auf false
gesetzt ist. Statt dessen sollte
CURLFile verwendet werden.