在沒有 readline 擴充 的情況下使用 -a 現在將導致錯誤。先前,沒有 readline 的 -a 與呼叫沒有任何參數的 php 的行為相同,除了列印額外的 "互動模式已啟用"
訊息。此模式*不是*互動式的。
phpdbg 的遠端功能已被移除。
用於 foreach、var_dump()、serialize()、物件比較等的屬性順序已變更。現在,屬性會根據它們的宣告和繼承自然排序。在基底類別中宣告的屬性將會在子類別屬性之前。
這個順序與 zend_object
結構中屬性的內部佈局一致,並重複了 default_properties_table[]
和 properties_info_table[]
中的順序。舊的順序沒有被記錄,是由於類別繼承的實作細節造成的。
FILTER_FLAG_ALLOW_OCTAL
標記的 FILTER_VALIDATE_INT
過濾器現在接受帶有前導八進位字首 ("0o"
/"0O"
) 的八進位字串。
所有 GMP 函式現在接受帶有前導八進位字首 ("0o"
/"0O"
) 的八進位字串。
使用 PDO::ATTR_SERVER_INFO
和 PDO::ATTR_SERVER_VERSION
的 PDO::getAttribute() 現在會傳回值,而不是拋出 PDOException。
ReflectionProperty::setAccessible() 和 ReflectionMethod::setAccessible() 不再有任何作用。現在透過 Reflection 永遠可以存取屬性和方法。
syslog() 現在是二進位安全的。
連結 libmysqlclient 時,現在可以使用 mysqli_stmt::next_result() 和 mysqli::fetch_all()。
OpenSSL 擴充套件 現在至少需要 OpenSSL 1.0.2 版。
現在支援 OpenSSL 3.0。請注意,許多加密演算法預設不再啟用(舊版提供者的一部分),而且參數驗證(例如最小金鑰大小)現在更嚴格。
現在預設使用 SHA256 進行簽章。
新增了對 OpenSSL_SHA256 和 OpenSSL_SHA512 簽章的支援。
新增了對安全性協定的 SHA256 和 SHA512 支援。
--with-password-argon2
現在使用 pkg-config 來偵測 libargon2。因此,現在應該使用 PKG_CONFIG_PATH 指定替代的 libargon2 位置。
log_errors_max_len INI 指令已被移除。自 PHP 8.0.0 起,它不再有任何作用。
現在可以在引號字串中逸出前導的美元符號:"\${"
現在會被解釋為內容為 ${
的字串。
雙引號字串中的反斜線現在會更一致地被視為逸出字元。以前,"foo\\"
後面接著換行符以外的內容不被視為已終止的字串。現在它被解釋為內容為 foo\
的字串。但是,作為例外,字串 "foo\"
後面接著換行符將繼續被視為內容為 foo\
的有效字串,而不是未終止的字串。這個例外是為了支援對 Windows 檔案路徑(例如 "C:\foo\"
)的單純使用。