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
340
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
260
OSSの開発や貢献時に役立つRFC
matsuo_atsushi
0
180
PHPの開発に貢献する4つの方法
matsuo_atsushi
0
370
Other Decks in Programming
See All in Programming
AtCoder Heuristic First-step Vol.1 講義スライド
terryu16
2
690
The Evolution of Enterprise Java with Jakarta EE 11 and Beyond
ivargrimstad
0
270
SLI/SLOの設定を進めるその前に アラート品質の改善に取り組んだ話
tanden
2
410
家族・子育て重視/沖縄在住を維持しながらエンジニアとしてのキャリアをどのように育てていくか?
ug
0
200
RCPと宣言型ポリシーについてのお話し
kokitamura
2
130
Boost Your Web Performance with Hyperdrive
chimame
1
220
PHPでお金を扱う時、終わりのない 謎の1円調査の旅にでなくて済む方法
nakka
2
870
バックエンドNode.js × フロントエンドDeno で開発して得られた知見
ayame113
4
1.2k
読もう! Android build ドキュメント
andpad
1
190
NestJSのコードからOpenAPIを自動生成する際の最適解を探す
astatsuya
0
100
私の愛したLaravel 〜レールを超えたその先へ〜
kentaroutakeda
9
2.5k
オレを救った Cline を紹介する
codehex
16
16k
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
69
10k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
31
4.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Agile that works and the tools we love
rasmusluckow
328
21k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7.1k
Optimizing for Happiness
mojombo
377
70k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
11
590
A Tale of Four Properties
chriscoyier
158
23k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
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