PHP 8.4.1 Released!

その他の変更

PHP コア

set(raw)cookie 関数は $option 引数を受け入れるように

setcookie() および setrawcookie() 関数は、次のようなシグネチャもサポートするようになりました:

setcookie(string $name, string $value = "", array $options = []): bool
$options"expires", "path", "domain", "secure", "httponly" および "samesite" をキーとして受け付ける連想配列です。

新しい syslog INI ディレクティブ

error_logsyslog に設定された場合、 ロギングをカスタマイズするため、次の 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 ディレクティブを含む、 ODBCRouterBirdstep のサポートが削除されました。

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 コンテキストオプション が追加されました。

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top