下位互換性のない変更点既存の PHP 5 のコードのほとんどは変更なしで動作するはずですが、 以下の下位互換性のない変更点については注意しましょう。 配列リテラルを用いてクラスのプロパティに配列を設定した場合、配列のキーが上書きされない以前のバージョンでは、クラスのプロパティとして宣言されている配列で明示的なキーと暗黙のキーが混在している場合に、 明示的に指定したキーと暗黙の数値キーが重複すると、黙って上書きされていました。以下に、例を示します。
上の例の PHP 5.5 での出力は、このようになります。 array(2) { [0]=> string(3) "bar" [1]=> string(4) "quux" } 上の例の PHP 5.6 での出力は、このようになります。 array(3) { [1]=> string(3) "foo" [2]=> string(3) "bar" [3]=> string(4) "quux" } json_decode が、より厳格に
json_decode は、JSON リテラル
この変更の影響を受けるのは、無効な形式の JSON を json_decode に渡していた場合だけです。 妥当な形式の JSON は、この変更の影響を受けず、通常通りに処理されます。 ストリームラッパーが、SSL/TLS を使っている場合のピア証明書とホスト名の検証にデフォルトで対応暗号化されたすべてのクライアントストリームで、ピア検証がデフォルトで有効になりました。 デフォルトでは、OpenSSL のデフォルト CA バンドルを使ってピア証明書を検証します。 たいていの場合は、正しい SSL 証明書を持つサーバーと通信するならこれを変更する必要はありません。 OpenSSL が、よく知られた CA バンドルを使うように設定されているからです。
デフォルトの CA バンドルを上書きすることもできます。
openssl.cafile あるいは openssl.capath を設定すればグローバルに変更でき、コンテキストオプション
一般的にはおすすめできませんが、
コンテキストオプション
GMP リソースがオブジェクトにGMP リソースがオブジェクトになりました。 GMP 拡張モジュールに実装されている API に変更はなく、コードに手を加えなくてもそのまま動作します。 しかし、is_resource などでリソースかどうかを明示的に調べている場合は注意が必要です。 Mcrypt 関数は、有効なキーと IV を要求するmcrypt_encrypt、mcrypt_decrypt、 mcrypt_cbc、mcrypt_cfb、 mcrypt_ecb、mcrypt_generic および mcrypt_ofb は、無効なサイズのキーや IV を受け付けなくなりました。 IV が必要なブロック暗号化モードで IV が指定されていない場合にも、処理が失敗するようになりました。 cURL でのファイルアップロード
@file 構文によるファイルアップロードを行う際には、CURLOPT_SAFE_UPLOAD を |