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