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
1k
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ライセンス変更の議論を通じて学ぶOSSライセンスの基礎
matsuo_atsushi
0
140
PHPのバージョンアップ時にも役立ったAST
matsuo_atsushi
0
420
OSSの開発や貢献時に役立つRFC
matsuo_atsushi
0
220
PHPの開発に貢献する4つの方法
matsuo_atsushi
0
440
Other Decks in Programming
See All in Programming
Bakuraku E2E Scenario Test System Architecture #bakuraku_qa_study
teyamagu
PRO
0
690
ボトムアップの生成AI活用を推進する社内AIエージェント開発
aku11i
0
1.6k
Amazon Bedrock Knowledge Bases Hands-on
konny0311
0
140
The Missing Link in Angular's Signal Story: Resource API and httpResource
manfredsteyer
PRO
0
110
Vueで学ぶデータ構造入門 リンクリストとキューでリアクティビティを捉える / Vue Data Structures: Linked Lists and Queues for Reactivity
konkarin
1
170
自動テストを活かすためのテスト分析・テスト設計の進め方/JaSST25 Shikoku
goyoki
2
570
Promise.tryで実現する新しいエラーハンドリング New error handling with Promise try
bicstone
2
320
퇴근 후 1억이 거래되는 서비스 만들기 | 내가 AI를 사용하는 방법
maryang
2
550
Inside of Swift Export
giginet
PRO
1
530
Dive into Triton Internals
appleparan
0
480
AI 時代だからこそ抑えたい「価値のある」PHP ユニットテストを書く技術 #phpconfuk / phpcon-fukuoka-2025
shogogg
1
410
Honoを技術選定したAI要件定義プラットフォームAcsimでの意思決定
codenote
0
140
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
118
20k
Scaling GitHub
holman
463
140k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Visualization
eitanlees
150
16k
Statistics for Hackers
jakevdp
799
220k
Automating Front-end Workflow
addyosmani
1371
200k
Speed Design
sergeychernyshev
32
1.2k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
Raft: Consensus for Rubyists
vanstee
140
7.2k
We Have a Design System, Now What?
morganepeng
54
7.9k
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