请注意,对字符串使用增量/减量运算符是合法的
<?php
$str = "";
echo ++$str; // 输出: 1
?>
当使用期望数字的运算符(+
-
*
/
**
%
<<
>>
|
&
^
)或它们的赋值等效项强制转换无效字符串时,引入了新的 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
以前,3 字节八进制字符串转义序列会静默溢出。现在,它们仍然会溢出,但会发出 E_WARNING
。
<?php
var_dump("\500");
上面的例子将输出
Warning: Octal escape sequence overflow \500 is greater than \377 in %s on line %d string(1) "@"
$this
的不一致修复虽然 $this
被认为是 PHP 中的一个特殊变量,但它缺乏适当的检查以确保它不被用作变量名或重新赋值。现在已对此进行了修正,以确保 $this
不能是用户定义的变量,不能重新赋值为不同的值,也不能被全局化。
会话 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,以保持向后兼容性
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(禁用)。
会话 ID 现在将仅使用 CSPRNG 生成。