PHP7.1 기타 변경 사항

Notices and warnings on arithmetic with invalid strings

숫자(+ - * / ** % << >> | & ^) 또는 이에 상응하는 할당을 기대하는 연산자를 사용하여 잘못된 문자열을 강제 변환할 때 새로운 E_WARNING 및 E_NOTICE 오류가 도입되었습니다. 문자열이 숫자 값으로 시작하지만 뒤에 숫자가 아닌 문자가 포함되어 있으면 E_NOTICE가 발생하고 문자열에 숫자 값이 없으면 E_WARNING이 발생합니다.

                  
<?php
'1b' + 'something';
                  
                

위의 예는 다음을 출력합니다.

Notice: A non well formed numeric value encountered in %s on line %d
Warning: A non-numeric value encountered in %s on line %d
                

Warn on octal escape sequence overflow

이전에는 3옥텟 8진수 문자열 이스케이프 시퀀스가 ​​자동으로 오버플로되었습니다. 이제 여전히 오버플로되지만 E_WARNING이 발생합니다.

                  
<?php
var_dump("\500");
                  
                

위의 예는 다음을 출력합니다.

Warning: Octal escape sequence overflow \500 is greater than \377 in %s on line %d
string(1) "@"
                

Inconsistency fixes to $this

$this는 PHP에서 특수 변수로 간주되지만 변수 이름으로 사용되거나 재할당되지 않았는지 확인하기 위한 적절한 검사가 부족했습니다. 이것은 이제 $this가 사용자 정의 변수가 될 수 없거나, 다른 값으로 재할당되거나, 전역화될 수 없도록 수정되었습니다.


Session ID generation without hashing

세션 ID는 생성 시 더 이상 해시되지 않습니다. 이 변경으로 다음 네 가지 ini 설정이 제거됩니다.

  • session.entropy_file
  • session.entropy_length
  • session.hash_function
  • session.hash_bits_per_character

그리고 다음 두 가지 ini 설정이 추가되었습니다.

  • session.sid_length - 세션 ID의 길이를 정의하며 이전 버전과의 호환성을 위해 기본값은 32자입니다.
  • session.sid_bits_per_character - 문자당 저장할 비트 수를 정의합니다(즉, 세션 ID에서 사용할 수 있는 문자 범위 증가). 기본적으로 하위 호환성을 위해 4로 설정됩니다.

Changes to INI file handling

    precision
    값이 -1로 설정되면 dtoa 모드 0이 사용됩니다. 기본값은 여전히 ​​14입니다.
    serialize_precision
    값이 -1로 설정되면 dtoa 모드 0이 사용됩니다. 이제 -1 값이 기본적으로 사용됩니다.
    gd.jpeg_ignore_warning
    이 php.ini 설정의 기본값은 1로 변경되었으므로 기본적으로 libjpeg 경고는 무시됩니다.
    opcache.enable_cli
    이 php.ini 설정의 기본값은 PHP 7.1.2에서 1(활성화됨)로 변경되었고 PHP 7.1.7에서 다시 0(비활성화됨)으로 변경되었습니다.

Session ID generation with a CSPRNG only

세션 ID는 이제 CSPRNG로만 생성됩니다.


More informative TypeError messages when null is allowed

arg_info 유형 검사에 대한 TypeError 예외는 이제 더 유익한 오류 메시지를 제공합니다. 매개변수 유형 또는 반환 유형이 null을 허용하는 경우(기본값이 null이거나 nullable 유형이 됨) 오류 메시지는 이제 "must be ... or null" 또는 "must"라는 메시지와 함께 이를 언급합니다. .. 또는 null이 됩니다."