その他の変更
PHP コア
iterable 型は、コンパイル時に組み込みで
array|Traversable のエイリアスと見なされるようになりました。
よって、iterable
に関連するエラーメッセージは、
array|Traversable
のものが使われるようになります。
型のリフレクションは、単一の iterable
(および ?iterable
) については
iterable
という名前が付いた ReflectionNamedType を生成しますが、
union 型の中で iterable
を使った場合、
array|Traversable
に変換されます。
送信される Cookie の日付フォーマットが 'D, d M Y H:i:s \G\M\T'
になりました。
これより前のバージョンでは 'D, d-M-Y H:i:s T'
でした。
SAPI モジュールへの変更
CLI
STDOUT, STDERR, STDIN ストリームは、リソースが破棄される時にクローズされなくなりました。 これらのクローズは、ほとんどの場合 CLI が終了する際に行われます。 しかし、fclose() や類似の関数を使うことで、これらのストリームを明示的に閉じることはできます。
変更された関数
PHP コア
バイナリセーフな文字列比較を行う
strcmp(), strcasecmp(),
strncmp(), strncasecmp(),
substr_compare() は、
比較対象の文字列の長さが等しくないときに strlen($string1) - strlen($string2)
を返すことが保証されなくなり、
-1
や 1
を返すようになりました。
返される具体的な値に依存する代わりに、これらの関数の戻り値は
0
と比較すべきです。
DBA
dba_open() と dba_popen() は、以下のシグネチャを強制するようになりました:
string
$path
,string
$mode
,?string
$handler
= null
,int
$permission
= 0644,int
$map_size
= 0,?int
$flags
= null
): resource|false
dba_fetch() のオプションの skip 引数は、 PHP でユーザーが使える関数のセマンティクスに従い、最後に置かれるようになりました。 シグネチャは以下になります:
オーバーロードされたシグネチャは下記のとおりです: 上記は、引き続き許可されていますが、新しい標準的なシグネチャを使うことを推奨します。Random
random_bytes() と random_int() は、CSPRNG が失敗した場合に \Random\RandomException をスローするようになりました。 これより前のバージョンでは、\Exception がスローされていました。
Standard PHP Library(SPL)
iterator_to_array() と iterator_count()
の iterator
引数の型が
Iterator から iterable に拡張され、
配列を渡せるようになりました。
拡張モジュールへのその他の変更
Date
DatePeriod のプロパティが、適切に宣言されるようになりました。
国際化関数
IntlBreakIterator, IntlRuleBasedBreakIterator, IntlCodePointBreakIterator, IntlPartsIterator, IntlCalendar, Collator, IntlIterator, UConverter, IntlDateFormatter, IntlDatePatternGenerator, MessageFormatter, ResourceBundle, Spoofchecker, IntlTimeZone, Transliterator のインスタンスは、シリアライズできなくなりました。 これより前のバージョンでは、シリアライズはできていましたが、 アンシリアライズした際に役に立たないオブジェクトを生成したり、失敗したりしていました。
MySQLi
libmysql のサポートが削除されました。 よって、libmysql を使って mysqli をビルドすることはもはやできません。 このバージョンからは、 mysqli 拡張モジュールは mysqlnd を使った場合にのみコンパイルできます。 以下に示す、mysqlnd で利用できない、libmysql のすべての機能が削除されました:
- mysqli_driver の reconnect プロパティ
- mysqli.reconnect INI ディレクティブ
- 定数
MYSQLI_IS_MARIADB
は、推奨されなくなりました
OCI8
必須となる Oracle Client library の最低バージョンが、11.2 になりました。
PCRE
パターン文字列中の NUL 文字 (\0
) がサポートされるようになりました。
Session
セッションがアクティブだったり、出力が既に送信された後に session.cookie_samesite を変更しようとすると、変更が失敗するとともに、警告が発生するようになりました。 この変更は、他のセッション関連の INI 設定の振る舞いに合わせたものです。
SQLite3
sqlite3.defensive の変更可能範囲が、INI_USER
になりました。
標準ライブラリ
getimagesize() は、AVIF 画像の ビット数、チャンネル情報、幅と高さの情報(dimensions) を返すようになりました。 これより前のバージョンでは、幅と高さの情報は 0x0 として報告され、ビット数とチャンネル情報は全く報告されていませんでした。
Zip
Zip 拡張モジュールは、1.20.0 にアップデートされました。 以下のメソッドが追加されています:
INI ファイルの扱いの変更
INI ファイルに数値を設定する際、
2進数のプレフィックス (0b
/0B
)
および、8進数のプレフィックス (0o
/0O
)
を指定する機能がサポートされました。
INI ファイルに数値を設定する際に値をゼロ (0
) から始めた場合、
引き続き8進数の数値として解釈されます。
設定項目によっては、不正な値をパースした場合に警告が発生するようになりました。 これより前のバージョンでは、静かに無視されていました。 後方互換を保つため、値を解釈する方法は変更されていません。 影響を受ける設定は、以下のとおりです:
- bcmath.scale
- com.code_page
- default_socket_timeout
- fiber.stack_size
- hard_timeout
- intl.error_level
- ldap.max_links
- max_input_nesting_level
- max_input_vars
- mbstring.regex_retry_limit
- mbstring.regex_stack_limit
- mysqli.allow_local_infile
- mysqli.allow_persistent
- mysqli.default_port
- mysqli.max_links
- mysqli.max_persistent
- mysqli.rollback_on_cached_plink
- mysqlnd.log_mask
- mysqlnd.mempool_default_size
- mysqlnd.net_read_buffer_size
- mysqlnd.net_read_timeout
- oci8.default_prefetch
- oci8.max_persistent
- oci8.persistent_timeout
- oci8.ping_interval
- oci8.prefetch_lob_size
- oci8.privileged_connect
- oci8.statement_cache_size
- odbc.allow_persistent
- odbc.check_persistent
- odbc.max_persistent
- odbc.max_links
- odbc.defaultbinmode
- odbc.default_cursortype
- odbc.defaultlrl
- opcache.consistency_checks
- opcache.file_update_protection
- opcache.force_restart_timeout
- opcache.interned_strings_buffer
- opcache.jit_bisect_limit
- opcache.jit_blacklist_root_trace
- opcache.jit_blacklist_side_trace
- opcache.jit_debug
- opcache.jit_hot_func
- opcache.jit_hot_loop
- opcache.jit_hot_return
- opcache.jit_hot_side_exit
- opcache.jit_max_exit_counters
- opcache.jit_max_loop_unrolls
- opcache.jit_max_polymorphic_calls
- opcache.jit_max_recursive_calls
- opcache.jit_max_recursive_returns
- opcache.jit_max_root_traces
- opcache.jit_max_side_traces
- opcache.log_verbosity_level
- opcache.max_file_size
- opcache.opt_debug_level
- opcache.optimization_level
- opcache.revalidate_freq
- output_buffering
- pcre.backtrack_limit
- pcre.recursion_limit
- pgsql.max_links
- pgsql.max_persistent
- post_max_size
- realpath_cache_size
- realpath_cache_ttl
- session.cache_expire
- session.cookie_lifetime
- session.gc_divisor
- session.gc_maxlifetime
- session.gc_probability
- soap.wsdl_cache_limit
- soap.wsdl_cache_ttl
- unserialize_max_depth
- upload_max_filesize
- user_ini.cache_ttl
- xmlrpc_error_number
- zend.assertions
- zlib.output_compression_level