🚀

今週の PHP 2023-11-04 〜 2023-11-10

2023/11/12に公開

PHP のメーリングリストから、気になった情報をピックアップします。

Internal

[Discussion] Variable Type Declaration Before Usage - Externals

ローカル変数に型をつけよう話です。RFCもすでに出ている件についての追加の議論という感じです。

PHP: rfc:local_variable_types

型チェックのオーバーヘッドとか、これについては議論が百出するので、見ていて飽きないですね。

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にしようという提案です。

Composer Remote Code Execution vulnerability via web-accessible composer.phar · CVE-2023-43655 · GitHub Advisory Database

リモートコード実行の脆弱性が発生しうるので、そもそも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