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
Windows版PHPのビルド手順とPHP 8.4における変更点
Search
Atsushi Matsuo
March 22, 2025
Programming
0
540
Windows版PHPのビルド手順とPHP 8.4における変更点
2025-03-22 PHPerKaigi 2025
https://fortee.jp/phperkaigi-2025
Atsushi Matsuo
March 22, 2025
Tweet
Share
More Decks by Atsushi Matsuo
See All by Atsushi Matsuo
PHPのバージョンアップ時にも役立ったAST
matsuo_atsushi
0
330
OSSの開発や貢献時に役立つRFC
matsuo_atsushi
0
200
PHPの開発に貢献する4つの方法
matsuo_atsushi
0
410
Other Decks in Programming
See All in Programming
Deep Dive into ~/.claude/projects
hiragram
14
2.6k
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
120
iOS 26にアップデートすると実機でのHot Reloadができない?
umigishiaoi
0
130
明示と暗黙 ー PHPとGoの インターフェイスの違いを知る
shimabox
2
510
効率的な開発手段として VRTを活用する
ishkawa
0
140
PipeCDのプラグイン化で目指すところ
warashi
1
280
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
360
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
260
脱Riverpod?fqueryで考える、TanStack Queryライクなアーキテクチャの可能性
ostk0069
0
150
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
320
ソフトウェア品質を数字で捉える技術。事業成長を支えるシステム品質の マネジメント
takuya542
1
13k
0626 Findy Product Manager LT Night_高田スライド_speaker deck用
mana_takada
0
170
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
The Language of Interfaces
destraynor
158
25k
Bash Introduction
62gerente
613
210k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Why Our Code Smells
bkeepers
PRO
336
57k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Git: the NoSQL Database
bkeepers
PRO
430
65k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Site-Speed That Sticks
csswizardry
10
690
GraphQLとの向き合い方2022年版
quramy
49
14k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Transcript
Windows版PHPのビルド手順と PHP 8.4における変更点 2025年3月22日 PHPerKaigi 2025 サイボウズ株式会社 松尾篤 1
Windows版PHPのビルド手順とPHP 8.4における変更点 トークの概要 はじめに • Windows版PHPのビルド手順および最新情報を紹介 2
Windows版PHPのビルド手順とPHP 8.4における変更点 このトークで伝えたいこと はじめに • さまざまなプラットフォームで動作するPHPはWindows環境でも動作 • Windows版PHPの開発は現在も積極的に行われているものの開発に貢献 できる箇所はたくさんある •
少ない人数の有志に開発を依存している状況なので興味を持った方は是非 コントリビュートを 3
Windows版PHPのビルド手順とPHP 8.4における変更点 今回の話題 はじめに • Windows版PHPの入手方法 • Windows版PHP 8.4における変更点 •
Windows版PHPのビルドに必要なもの • Windows版PHPのビルド手順 • Windows版PHPの依存ライブラリはどのように作成されているのか 4
Windows版PHPのビルド手順とPHP 8.4における変更点 自己紹介 はじめに 松尾篤 • PHP使用歴:約20年 • PHPを使った開発歴は約17年 •
2023年4月にGaroon開発チームに加入 • PHPを使用しているGaroonはWindows Server向けのパッケージ版も提供 • Mac使用歴:約30年 • 漢字Talk 7.1以来のMacユーザー 5
Windows版PHPの入手方法 6
Windows版PHPのビルド手順とPHP 8.4における変更点 Windows環境でも動作するPHP Windows版PHPの入手方法 • PHPはマルチプラットフォームに対応 • https://www.php.net/manual/ja/install.php • さまざまなプラットフォームで動作
• 各種UnixおよびGNU/Linuxディストリビューション • macOS • Microsoft Windows • 各種クラウドコンピューティングプラットフォーム 7
Windows版PHPのビルド手順とPHP 8.4における変更点 現在も積極的に開発・提供されているWindows版PHP Windows版PHPの入手方法 • PHP 7.4まではMicrosoft社が正式にWindows版PHPをサポートしていた • PHP 8.0以降でMicrosoft社による正式ビルドが提供されなくなった
• PHP開発チームの有志によるWindows版PHPの開発・提供は現在も継続中 • PHP 8.3リリース時には未更新のWindows用依存ライブラリ(PHP本体のビ ルドに必要なOSSライブラリ)が数多く存在 • PHP 8.4リリース時にはほとんどの依存ライブラリが更新されたが少ない人数 の有志に開発を依存している状況 • Windows版ではPHP本体以外の各ライブラリも有志によりビルドされている 8
Windows版PHPのビルド手順とPHP 8.4における変更点 Windows版PHPの入手方法 Windows版PHPの入手方法 • 公式サイトからWindows版のバイナリアーカイブをダウンロード可能 • 実運用環境でも使えるので通常はソースコードからビルドする必要はない • https://windows.php.net/download/
• ビルドする際には公式サイトからソースコードをダウンロード • https://www.php.net/downloads.php • https://github.com/php/php-src 9
Windows版PHP 8.4における変更点 10
Windows版PHPのビルド手順とPHP 8.4における変更点 最新バージョンはPHP 8.4 Windows版PHP 8.4における変更点 • 2024年11月にPHP 8.4がリリース •
2025年3月時点の最新バージョンはPHP 8.4.5 11
Windows版PHPのビルド手順とPHP 8.4における変更点 Windows版PHP 8.4における変更点 Windows版PHP 8.4における変更点 • https://www.php.net/manual/ja/migration84.windows-support.php • ビルドにはVisual
Studio 2022が事実上必要に • SIMD命令関係 (AVX/AVX2/AVX-512) のサポートを強化 12
Windows版PHPのビルド手順とPHP 8.4における変更点 マニュアルに明記されていない変更点 Windows版PHP 8.4における変更点 • PHP SDKが参照するWindows版依存ライブラリの配置先URLが変更 • 変更前
: https://windows.php.net/downloads/php-sdk/deps/ • 変更後 : https://downloads.php.net/~windows/php-sdk/deps/ 13 https://github.com/php/php-sdk-binary-tools/pull/5/files
Windows版PHPのビルド手順とPHP 8.4における変更点 マニュアルに明記されていない変更点 Windows版PHP 8.4における変更点 • PHP SDKが参照するWindows版依存ライブラリの配置先URLが変更 14
Windows版PHPのビルド手順とPHP 8.4における変更点 マニュアルに明記されていない変更点 Windows版PHP 8.4における変更点 • libXpmがgd拡張モジュールの依存ライブラリとして必須ではなくなった • https://github.com/php/php-src/pull/15846/files 15
Windows版PHPのビルドに必要なもの 16
Windows版PHPのビルド手順とPHP 8.4における変更点 ソースコードからビルドすることが必要になるケース Windows版PHPのビルドに必要なもの • PHPを改造するパッチを当てる必要がある場合 • 公式で修正済みバージョンが公開されていない状況で製品およびサービス に影響する不具合や脆弱性を改修したい場合 •
社内の開発・運用ポリシーでビルドが推奨されている場合 • etc. 17
Windows版PHPのビルド手順とPHP 8.4における変更点 Windows版PHPをソースコードからビルドする際に必要になるもの Windows版PHPのビルドに必要なもの • Visual Studio • Microsoft Windows
• Git • PHP SDK • PHPのソースコード • PHPの依存ライブラリ 18
Windows版PHPのビルド手順とPHP 8.4における変更点 Windows版PHP 8.4をソースコードからビルドする際に必要になるもの Windows版PHPのビルドに必要なもの • Visual Studio:Visual Studio 2022
• Microsoft Windows • Git • PHP SDK:https://github.com/php/php-sdk-binary-tools • PHPのソースコード:PHP公式リポジトリのPHP-8.4ブランチ • PHPの依存ライブラリ:PHP SDKを使って必要なものを取得できる 19
Windows版PHPのビルド手順とPHP 8.4における変更点 Visual Studio 2022 Windows版PHPのビルドに必要なもの • PHP 8.4の場合はVisual Studio
2022(Visual C++ 17.0)が必要 • 「C++ によるデスクトップ開発」にチェックをつけてインストール 20
Windows版PHPのビルド手順とPHP 8.4における変更点 Git Windows版PHPのビルドに必要なもの • Gitの公式サイトから入手可能 • https://git-scm.com/downloads/win • 64ビット版のGit
for Windowsをダウンロードおよびインストール 21
Windows版PHPのビルド手順 22
Windows版PHPのビルド手順とPHP 8.4における変更点 Windows版PHP 8.4のビルド Windows版PHPのビルド手順 • CLI(コマンドラインインターフェース)でビルド • 64ビット版をビルドする場合 •
x64 Native Tools Command Prompt for VS 2022を起動 23
Windows版PHPのビルド手順とPHP 8.4における変更点 PHP SDK Windows版PHPのビルド手順 • Windows版PHPのビルドに役立つツールキット • https://github.com/php/php-sdk-binary-tools •
2025年3月現在の最新バージョンは2.3.0 • https://github.com/microsoft/php-sdk-binary-tools のリポジトリは 2023年2月にアーカイブされていて現在は更新されていない • git cloneでリポジトリを取得してc:\php-sdkに配置 • git clone https://github.com/php/php-sdk-binary-tools.git c:\php-sdk 24
Windows版PHPのビルド手順とPHP 8.4における変更点 PHP SDKのセットアップ手順 Windows版PHPのビルド手順 • cd c:\php-sdk\ • git
checkout php-sdk-2.3.0 • .\phpsdk-vs17-x64.bat • phpsdk_buildtree php84 25
Windows版PHPのビルド手順とPHP 8.4における変更点 PHPのソースコードを取得 Windows版PHPのビルド手順 • git clone https://github.com/php/php-src.git php-8.4.5-src •
cd php-8.4.5-src • git checkout PHP-8.4.5 26
Windows版PHPのビルド手順とPHP 8.4における変更点 PHPの依存ライブラリを取得 Windows版PHPのビルド手順 • phpsdk_deps --update --branch 8.4 •
https://downloads.php.net/~windows/php-sdk/deps/vs17/x64/ に配置 されている圧縮ファイルを取得 • 取得するファイルの一覧は下記を参照 • https://downloads.php.net/~windows/php-sdk/deps/series/packages-8.4- vs17-x64-stable.txt 27
Windows版PHPのビルド手順とPHP 8.4における変更点 PHPのコンパイル Windows版PHPのビルド手順 • buildconf • configure --enable-cli •
nmake • .\x64\Release_TS\php.exe -v 28
Windows版PHPのビルド手順とPHP 8.4における変更点 テストを実行する場合 Windows版PHPのビルド手順 • nmake test 29
Windows版PHPのビルド手順とPHP 8.4における変更点 Windows版PHPビルド手順のドキュメント Windows版PHPのビルド手順 • https://github.com/php/php-sdk-binary-tools • リポジトリ内のREADME.mdを参照 • https://wiki.php.net/internals/windows/stepbystepbuild_sdk_2
30
Windows版PHPの依存ライブラリは どのように作成されているのか 31
Windows版PHPのビルド手順とPHP 8.4における変更点 依存ライブラリ作成の流れ Windows版PHPの依存ライブラリはどのように作成されているのか • Windows版PHPが依存するライブラリの作成はGitHub Actionsを使って 半自動化されている状況 32
Windows版PHPのビルド手順とPHP 8.4における変更点 依存ライブラリ作成の流れ Windows版PHPの依存ライブラリはどのように作成されているのか • OpenSSLの場合 • 次のリポジトリでソースコードが管理されている • https://github.com/winlibs/openssl
• winlib-builderリポジトリのワークフローを手動で実行してファイルを作成 • https://github.com/winlibs/winlib- builder/blob/master/.github/workflows/openssl.yml • 手動で次のディレクトリにアップロードされている • https://downloads.php.net/~windows/php-sdk/deps/vs17/x64/ 33
Windows版PHPのビルド手順とPHP 8.4における変更点 依存ライブラリ作成の流れ Windows版PHPの依存ライブラリはどのように作成されているのか • 現状の問題点 • アップロードできる人が限られている • プロセスに透明性がない
• 履歴が残っていない • 手動更新なので間違いが発生しやすい 34
Windows版PHPのビルド手順とPHP 8.4における変更点 PECL(PHP Extension Community Library) Windows版PHPの依存ライブラリはどのように作成されているのか • C言語で記述されたPHP拡張モジュールを提供しているサービス •
PECL拡張モジュールのほとんどがGitHub Actionsを使って作成が自動化 されている状況 • https://github.com/php/php-windows-builder/issues/3 • Windows用の拡張モジュール作成者向けにGitHub Actions上でのビルド を支援するアクションが整いつつある状況 • https://github.com/php/php-windows-builder • https://github.com/php/setup-php-sdk 35
まとめ 36
Windows版PHPのビルド手順とPHP 8.4における変更点 このトークで伝えたかったこと まとめ • さまざまなプラットフォームで動作するPHPはWindows環境でも動作 • Windows版PHPの開発は現在も積極的に行われているものの開発に貢献 できる箇所はたくさんある •
少ない人数の有志に開発を依存している状況なので興味を持った方は是非 コントリビュートを 37
Windows版PHPのビルド手順とPHP 8.4における変更点 Windows版PHPに関する情報源 まとめ • 公式サイト • https://www.php.net/ • https://windows.php.net/
• Windows Internals list(メーリングリスト) • https://www.php.net/mailing-lists.php • GitHubにあるPHP関連リポジトリ • https://github.com/winlibs • https://github.com/php/php-src 38
©️ Cybozu, Inc. 39