PHP 8.1.9 Released!



New E_WARNING and E_NOTICE errors have been introduced when invalid strings are coerced using operators expecting numbers (+ - * / ** % << >> | & ^) or their assignment equivalents. An E_NOTICE is emitted when the string begins with a numeric value but contains trailing non-numeric characters, and an E_WARNING is emitted when the string does not contain a numeric value.

'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


Previously, 3-octet octal string escape sequences would overflow silently. Now, they will still overflow, but E_WARNING will be emitted.



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

$this 不一致的修正

Whilst $this is considered a special variable in PHP, it lacked proper checks to ensure it wasn't used as a variable name or reassigned. This has now been rectified to ensure that $this cannot be a user-defined variable, reassigned to a different value, or be globalised.

无需散列即可生成 Session ID

Session 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

INI 文件处理的变化


If the value is set to -1, then the dtoa mode 0 is used. The default value is still 14.


If the value is set to -1, then the dtoa mode 0 is used. The value -1 is now used by default.


The default of this php.ini setting has been changed to 1, so by default libjpeg warnings are ignored.


The default of this php.ini setting has been changed to 1 (enabled) in PHP 7.1.2, and back to 0 (disabled) in PHP 7.1.7.

Session ID generation with a CSPRNG only

Session IDs will now only be generated with a CSPRNG.

More informative TypeError messages when null is allowed

TypeError exceptions for arg_info type checks will now provide more informative error messages. If the parameter type or return type accepts null (by either having a default value of null or being a nullable type), then the error message will now mention this with a message of "must be ... or null" or "must ... or be null."

add a note

User Contributed Notes 1 note

4 years ago
Note that using Incrementing/Decrementing operators on string is legal
= "";
echo ++
$str; // output: 1
To Top