Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PHP 8.4がリリース! あなたはもうアップデートしましたか?
Search
picopico
March 26, 2025
0
620
PHP 8.4がリリース! あなたはもうアップデートしましたか?
PHPerKaigi 2025にて発表
https://fortee.jp/phperkaigi-2025/proposal/2272e963-b6b4-4707-88fe-2bef1a9f9e7f
picopico
March 26, 2025
Tweet
Share
More Decks by picopico
See All by picopico
PHPとFluentdで実現するリアルタイムログ分析
picopico
2
440
2023 State of DevOps Report」簡易ピックアップ
picopico
0
130
トーク力は一生役に立つよ
picopico
1
680
良いテストとは何か:持続可能で保守性の高いテストを書く
picopico
16
5.7k
伝え方で変わるLTの世界
picopico
3
1.4k
エラー処理関数を完全に理解する
picopico
0
170
一日30回リリースを可能にするpixiv開発
picopico
6
3.1k
Featured
See All Featured
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Code Review Best Practice
trishagee
74
20k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.7k
ラッコキーワード サービス紹介資料
rakko
1
2.5M
The Language of Interfaces
destraynor
162
26k
How to Ace a Technical Interview
jacobian
281
24k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Building the Perfect Custom Keyboard
takai
2
700
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
Statistics for Hackers
jakevdp
799
230k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Transcript
PHP 8.4がリリース! あなたはもうアップデートしましたか? pixiv Inc. 当田 昇(@picopico_dev) 2024.03.09
2 会社 ピクシブ株式会社 経歴 2023年4⽉ 新卒⼊社 職種 pixiv事業本部ウェブエンジニアリング部 兼 インフラ部SREチーム
当⽥ 昇 @picopico_dev
PHPのアップデート、してますか?
https://www.php.net/supported-versions.php
PHP8.0は既にEnd of life PHP8.1~8.2もSecurity fixes only
ところで・・・
2024/11/21にPHP8.4がリリースされました🎉
とはいえ、まだアップデートしていない人も多いはず ・・・
目次 1. PHPアップデートの全貌 2. PHP8.4移行の試練
目次 1. PHPアップデートの全貌 2. PHP8.4移行の試練
PHPアップデートの全貌 1. PHP8.4環境の作成
PHPアップデートの全貌 1. PHP8.4環境の作成 2. 自動化テストのパス
PHPアップデートの全貌 1. PHP8.4環境の作成 2. 自動化テストのパス 3. E2Eテスト or 主要な機能の動作確認
PHPアップデートの全貌 1. PHP8.4環境の作成 2. 自動化テストのパス 3. E2Eテスト or 主要な機能の動作確認 4.
段階的リリース
PHPアップデートの全貌 1. PHP8.4環境の作成 2. 自動化テストのパス 3. E2Eテスト or 主要な機能の動作確認 4.
段階的リリース 5. 100%リリース
目次 1. PHPアップデートの全貌 2. PHP8.3→8.4移行の試練
https://www.php.net/manual/ja/migration84.php
https://www.php.net/manual/ja/migration84.php
• exit() の動作の変更 • 比較中の再帰 • readonly プロパティの間接的な変更 • 定数の型の変更
• 一時ファイル名の長さ • E_STRICT エラーレベルの削除 • 型が追加された拡張クラスの定数 • リソースからオブジェクトへの移行 • 暗黙的な nullable パラメータ • trigger_error() で E_USER_ERROR を使用 • CURLOPT_BINARYTRANSFER 定数は非推奨 • …
3つピックアップ!
その1: PECL拡張が対応してない そもそもPECL拡張が8.4に対応してない。 PRを送る or GitHubの最新対応版を自前でビルドして使う
その2: exitの関数化 何故かPHP8.4でテストを実行すると、テストが落ちても正常終了する問題
その2: exitの関数化 何故かPHP8.4でテストを実行すると、テストが落ちても正常終了する問題
その2: exitの関数化 CIでregister_shutdown_function()内でexit()を呼び出すコードがあった。 PHP8.4以前は終了コードが引き継がれていたが、PHP8.4以後はパラメータが無い時 にデフォルト値0が適用される。 よって、テストが落ちているのに何故か正常終了してしまっていた。
register_shutdown_function(function () { if (...) { exit(); // 終了コードが0になる破壊的変更 }
}
その3: 暗黙的なnullable型の非推奨 デフォルト値null(=nullable)で型にnullが無い場合を非推奨に function foo(string $param = null) {}
Rectorで一掃する https://getrector.com/rule-detail/explicit-nullable-param-type-rector
ライブラリ側でエラーが発生したら? (以下は対症療法です。 出来ればPR送ってライブラリ側で修正するかフォークして下さい)
cweagans/composer-patchesでパッチを当てる https://docs.cweagans.net/composer-patches/
cweagans/composer-patchesでパッチを当てる 1. vendor/配下をgitに追加 2. vendor/配下にRectorを適用 3. git diff – vendor/hoge
> patches/hoge-php84.patch 4. composer.jsonにパッチを追加
アップデート頑張ろう!