如果沒(méi)有安裝 readline 擴展,使用
-a 選項現在將導致錯誤。在之前,如果沒(méi)有 readline 擴展的話(huà) -a
與直接無(wú)參數調用 php 的表現一樣,除了額外顯示一行
"Interactive mode enabled"
消息。這個(gè)模式非交互模式。
phpdbg 的遠程功能已經(jīng)被移除。
在 foreach、var_dump() 、序列化()、對象對比等場(chǎng)景中屬性的順序發(fā)生了改變。 現在,屬性將根據它們的聲明與繼承進(jìn)行排序,在基類(lèi)中聲明的屬性將排在子類(lèi)屬性之前。
這個(gè)順序與 zend_object
結構中屬性的內部布局保持一致,并且重復了
default_properties_table[]
和 properties_info_table[]
中的順序。舊的順序沒(méi)有被記錄下來(lái),是由類(lèi)的繼承實(shí)現細節造成的。
FILTER_VALIDATE_INT
過(guò)濾器的 FILTER_FLAG_ALLOW_OCTAL
標識現在接受帶八進(jìn)制前綴("0o"
/"0O"
)的八進(jìn)制字符串。
所有的 GMP 函數現在接受帶八進(jìn)制前綴(
"0o"
/"0O"
)的八進(jìn)制字符串。
帶著(zhù) PDO::ATTR_SERVER_INFO
和
PDO::ATTR_SERVER_VERSION
常量的
PDO::getAttribute()
方法現在返回的是值而不是拋出 PDOException 異常。
ReflectionProperty::setAccessible() 和 ReflectionMethod::setAccessible() 將不再起作用。屬性和方法現在總被認為是能夠通過(guò)反射訪(fǎng)問(wèn)的。
syslog() 現在是二進(jìn)制安全的。
imagewebp() 現在可以通過(guò)傳遞 IMG_WEBP_LOSSLESS
作為質(zhì)量來(lái)實(shí)現無(wú)損的 WebP 編碼了。
這個(gè)常量只有在所使用的 libgd 支持無(wú)損 WebP 編碼的情況在才會(huì )被定義。
在連接 libmysqlclient 時(shí),mysqli_stmt::next_result() 和 mysqli::fetch_all() 現在可以使用了。
OpenSSL 擴展 現在至少需要 OpenSSL 1.0.2 版本。
現在已經(jīng)支持 OpenSSL 3.0 了。請注意許多密碼算法(部分老的提供者)不再是默認啟用的,以及參數校驗(例如:最小秘鑰長(cháng)度)比以前更加嚴格了。
現在簽名的默認算法為 SHA256。
簽名算法增加了對 OpenSSL_SHA256 和 OpenSSL_SHA512 的支持。
為安全協(xié)議增加了對 SHA256 和 SHA512 的支持。
--with-password-argon2
現在使用 pkg-config 來(lái)檢測
libargon2。因此現在應該使用 PKG_CONFIG_PATH
來(lái)修改 libargon2 的位置。
INI 配置項 log_errors_max_len 已經(jīng)被移除。從 PHP 8.0.0 開(kāi)始將不再起作用。
一個(gè)在引用字符串中的前置美元符號現在可以被轉義:"\${"
將會(huì )被解釋為內容包含 ${
的字符串。
雙引號內的字符串中反斜線(xiàn)現在被更一致地視為轉義字符。之前 "foo\\"
的后面如果是除換行之外的其他字符是不被視為一個(gè)終止字符串的?,F在,它被解釋成一個(gè)內容為
foo\
的字符串。然而有一個(gè)例外的地方是后面跟著(zhù)換行符的字符串 "foo\"
將繼續被視為一個(gè)有效的、內容為 "foo\" 的字符串,而不是一個(gè)還沒(méi)有結束的字符串。這個(gè)例外的存在是為了天然支持 Windows 文件路徑的使用,如
"C:\foo\"
。