setcookie() および setrawcookie() 関数は、次のようなシグネチャもサポートするようになりました:
$options
は "expires"
, "path"
, "domain"
, "secure"
, "httponly"
および "samesite"
をキーとして受け付ける連想配列です。 error_log が syslog
に設定された場合、 ロギングをカスタマイズするため、次の ini ディレクティブが追加されました: syslog
:
all
, no-ctrl
そして ascii
です。 PHP 7.3.8 以降では、 それより前のバージョンでの振る舞いを復元する raw
も使えます。 このフィルタは、syslog() をコールした際にも影響します。 cyclic GC が改良されました。かなりのパフォーマンスの向上に繋がる可能性があります。
var_export() 関数は、 存在しないメソッド stdClass::__setState() を使わず、 オブジェクトにキャストされた配列 ((object) array( ... )
) として stdClass を エクスポートするようになりました。
debug_zval_dump() 関数は、再帰的な配列やオブジェクトを表示する方法が、 var_dump() と同じになるように変更されました。 そうした配列やオブジェクトは、もはや二度表示されません。
array_push() および array_unshift() 関数は、単一の引数でも呼び出せるようになりました。これは spread演算子と共に使うと特に便利です。
使われていなかった定数 PHPDBG_FILE
, PHPDBG_METHOD
, PHPDBG_LINENO
および PHPDBG_FUNC
が削除されました。
getallheaders() 関数も利用可能になりました。
libcurl ≥ 7.15.5 が必須になりました。
FILTER_VALIDATE_FLOAT
定数が thousand
オプションもサポートしました。 これにより、受け入れ可能な千単位のセパレーター文字を指定できます。 デフォルト ("',."
) は、以前のPHPのバージョンと完全に互換性があります。
magic_quotes
フィルタ (FILTER_SANITIZE_MAGIC_QUOTES
) のエイリアスとして FILTER_SANITIZE_ADD_SLASHES
が追加されました。 magic_quotes
フィルタは、将来のPHPで削除される予定です。
デフォルトの転送モードが binary
になりました。
PHP が ICU 56 以降とリンクされた場合、Normalizer::NONE
は推奨されません。
NFKC_Casefold
正規化のために、 Normalizer::normalize() メソッドの引数として normalizer::form_kc_cf
が追加されました。 これは、ICU 56 以降で利用可能です。
新しいフラグ JSON_THROW_ON_ERROR
が追加されました。 これは json_decode() や json_encode() 関数で使うことができ、 エラー時に JsonException をスローできるようになります。 これは、グローバルなエラー状態 json_last_error() や json_last_error_msg() を取得する代わりに使えます。 JSON_PARTIAL_OUTPUT_ON_ERROR
は、 JSON_THROW_ON_ERROR
に優先します。
configure オプション --with-libmbfl は利用できなくなりました。
birdstep.max_links
ini ディレクティブを含む、 ODBCRouter
と Birdstep
のサポートが削除されました。
opcache.inherited_hack
ini ディレクティブは削除されました。 この値は、PHP 5.3.0 から既に無視されていました。
ssl ストリームオプション min_proto_version
および max_proto_version
が 指定可能な TLS プロトコルに関連する定数とともに追加されました。
PCRE拡張 は PCRE2 にアップグレードされました。 これによって振る舞いが少し変更される可能性があります (たとえば、 クラス中の文字の範囲がより厳密に解釈されるなど) し、 既に存在している正規表現の文法が増えるかもしれません。
preg_quote() 関数は '#'
もエスケープするようになりました。
空の行セットを自動的にスキップできるようにするために、 PDO::DBLIB_ATTR_SKIP_EMPTY_ROWSETS
属性が追加されました。
TDS バージョンを公開するための属性として、 PDO::DBLIB_ATTR_TDS_VERSION
が追加されました。
DATETIME2 型のカラムは、DATETIME型の絡むと同様に扱われるようになりました。
SQLite3 データベースは、 新しい PDO::SQLITE_ATTR_OPEN_FLAGS
属性を PDO::SQLITE_OPEN_READONLY
に設定することにより、 読み取り専用としてオープンできるようになりました。
session_set_cookie_params() 関数は、以下のシグネチャもサポートしました:
$options
は、 "lifetime"
, "path"
, "domain"
, "secure"
, "httponly"
および "samesite"
を指定可能な連想配列です。 それに応じて、 session_get_cookie_params() 関数の戻り値にも "samesite"
が含まれるようになりました。 さらに、Cookie の SameSite ディレクティブのデフォルト値を設定するため、 新しい session.cookie_samesite
ini オプションが追加されました。この値のデフォルト値は ""
(空文字列) なので、SameSite ディレクティブは設定されません。 この値には、"Lax"
または "Strict"
が設定でき、それぞれが SameSiteディレクティブに設定されます。 » tidyp 抜きでビルドすることが透過的にサポートされました。tidyp はリリース日を取得するAPIを提供していないため、 tidyp 抜きで PHP がビルドされた場合、 tidy_get_release() や tidy::getRelease() は 'unknown'
を返します。
拡張モジュールが libxml を使ってビルドされた場合には、 xml_set_external_entity_ref_handler() 関数のコールバックの戻り値が無視されることはなくなりました。 このバージョン以前はコールバックの戻り値が無視され、パースが止まりませんでした。
PHP にバンドルされている libzip を使ってビルドすることは推奨されません。 しかし、--without-libzip を configure オプションに指定することにより、まだバンドルされた libzip を使ってビルド可能です。
望ましい圧縮レベルの設定を楽にするために、compress.zlib ラッパー の zlib/level コンテキストオプション が追加されました。