이전 버전과 호환되지 않는 변경 사항

대부분의 기존 PHP 5 코드는 변경 없이 작동하지만 이전 버전과 호환되지 않는 변경 사항에 유의하십시오.


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

이전에는 명시적 키와 암시적 키가 혼합된 클래스 속성으로 선언된 배열에서 명시적 키가 순차적 암시적 키와 동일한 경우 배열 요소를 자동으로 덮어쓸 수 있었습니다. 예를 들어:

                  
<?php
class C {
    const ONE = 1;
    public $array = [
        self::ONE => 'foo',
        'bar',
        'quux',
    ];
}

var_dump((new C)->array);
?>
                  
                

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() strictness

json_decode()는 이제 JSON 사양에 따라 JSON 리터럴 true, false 및 null의 소문자가 아닌 변형을 거부하고 그에 따라 json_last_error()를 설정합니다. 이전에는 대문자 또는 대소문자가 혼합된 이러한 값 중 하나로만 구성된 json_decode()에 대한 입력이 허용되었습니다.

이 변경은 유효하지 않은 JSON이 json_decode()에 전달된 경우에만 영향을 미칩니다. 유효한 JSON 입력은 영향을 받지 않으며 계속 정상적으로 구문 분석됩니다.


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

모든 암호화된 클라이언트 스트림은 이제 기본적으로 피어 확인을 활성화합니다. 기본적으로 OpenSSL의 기본 CA 번들을 사용하여 피어 인증서를 확인합니다. 배포자는 일반적으로 알려진 양호한 CA 번들을 사용하도록 OpenSSL을 구성하므로 대부분의 경우 유효한 SSL 인증서가 있는 서버와 통신하기 위해 변경할 필요가 없습니다.

기본 CA 번들은 openssl.cafile 또는 openssl.capath 구성 설정을 설정하여 전역적으로 재정의하거나 cafile 또는 capath 컨텍스트 옵션을 사용하여 요청별로 재정의할 수 있습니다.

일반적으로 권장되지는 않지만 verify_peer 컨텍스트 옵션을 false로 설정하여 요청에 대한 피어 인증서 확인을 비활성화하고 verify_peer_name 컨텍스트 옵션을 false로 설정하여 피어 이름 유효성 검사를 비활성화할 수 있습니다.


GMP resources are now objects

GMP 리소스는 이제 개체입니다. GMP 확장에 구현된 기능적 API는 변경되지 않았으며 is_resource() 또는 이와 유사한 것을 사용하여 리소스를 명시적으로 확인하지 않는 한 코드는 수정되지 않고 실행되어야 합니다.


Mcrypt functions now require valid keys and IVs

mcrypt_encrypt(), mcrypt_decrypt(), mcrypt_cbc(), mcrypt_cfb(), mcrypt_ecb(), mcrypt_generic() 및 mcrypt_ofb()는 더 이상 잘못된 크기의 키 또는 IV를 허용하지 않으며, IV가 필요한 블록 암호 모드는 이제 실패합니다. IV는 제공되지 않습니다.


cURL file uploads

@file 구문을 사용하여 업로드하려면 이제 CURLOPT_SAFE_UPLOAD를 false로 설정해야 합니다. 대신 CURLFile을 사용해야 합니다.