今週の PHP 2023-11-04 〜 2023-11-10
PHP のメーリングリストから、気になった情報をピックアップします。
Internal
[Discussion] Variable Type Declaration Before Usage - Externals
ローカル変数に型をつけよう話です。RFCもすでに出ている件についての追加の議論という感じです。
型チェックのオーバーヘッドとか、これについては議論が百出するので、見ていて飽きないですね。
Fix the inconsistent behavior of PDO::PARAM_XXX - Externals
PDOの PARAM_XXXX
系の一貫性の無い振る舞いを修正しようというお話
https://github.com/php/php-src/issues/12603
詳細はPRの表を見るのが一番ですが、この表作るだけですでに偉人だなとも思います。
徳丸先生も以前ブログを書かれていましたね PHP 7.2以降におけるPDO::PARAM_INTの仕様変更 | 徳丸浩の日記
少なくとも、まずはドライバーごとの差異をなくなってくれると良さそうですね。
PHP: rfc:release_cycle_update
リリースサイクルを見直しましょうというRFCです。現在のリリースプロセス自体も PHP: rfc:releaseprocess で決まったようです。
現状のリリースサイクルだと、セキュリティフィックスが終了するタイミングが早すぎるので、もう少し伸ばしませんかという提案です。このRFCについては、PHPのメンテナンスをする側から見れば、余計な手間が発生することになります。まだまだ、期間も含めて、議論は進んでいないので今後も要チェックです。
使う側からすると、期限が延びるのは良くもあり、悪くもありという感じですね。短いからこそ、とっととアップデートしていこうという気持ちになるのも確かなので。
PHP: rfc:process_object_name
Processのリソースがオブジェクトに変換されたあとの名前について投票が開始されました。名前的には ProcessHandle
が優勢なようですが、これはPHP8.4で計画されていたもので、名前が決まってないことが問題だったようです。
全体のスケジューリングは下記のイシューで確認できます。
Resource to opaque object migration · Issue #6 · php/php-tasks
Set register_argc_argv to Off by default - Externals
cli, embed, phpdbg を除くすべてのSAPIで register_argc_argv
をデフォルトでOFFにしようという提案です。
リモートコード実行の脆弱性が発生しうるので、そもそもOFFになっていることが望ましいということです。上の例はWebからアクセス可能な composer.phar
ということなので攻撃経路としては難しそうですが、フェールセーフの考え方からするとデフォルトOFFは妥当と思います。
例えば、dockerの公式イメージでも、ONになっています
$ docker run -it php:apache bash
root@60e88ddd1652:/var/www/html# php -v
PHP 8.2.12 (cli) (built: Nov 1 2023 12:25:08) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.12, Copyright (c) Zend Technologies
root@60e88ddd1652:/var/www/html# php -i | grep register_argc_argv
register_argc_argv => On => On
PHP-8.1 closed for bug fixes, security fixes only - Externals
8.1 のバグフィックスバージョンは、8.1.26がラストチャンスというお知らせ。以後はセキュリティフィックスのみになります。時が経つのは早いなぁ。
リリース
各種リリースのRC版がダウンロード可能です。
- PHP 8.1.26RC1
- PHP 8.2.13RC1
- PHP 8.3.0RC6
Discussion