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