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
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
140
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
1
18k
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
360
5つのアンチパターンから学ぶLT設計
narihara
1
170
効率的な開発手段として VRTを活用する
ishkawa
0
140
The Modern View Layer Rails Deserves: A Vision For 2025 And Beyond @ RailsConf 2025, Philadelphia, PA
marcoroth
1
150
A full stack side project webapp all in Kotlin (KotlinConf 2025)
dankim
0
120
地方に住むエンジニアの残酷な現実とキャリア論
ichimichi
5
1.5k
Blazing Fast UI Development with Compose Hot Reload (droidcon New York 2025)
zsmb
1
290
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
390
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
270
Rails Frontend Evolution: It Was a Setup All Along
skryukov
0
140
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
950
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Producing Creativity
orderedlist
PRO
346
40k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
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