Slide 1

Slide 1 text

Windows版PHPのビルド手順と PHP 8.4における変更点 2025年3月22日 PHPerKaigi 2025 サイボウズ株式会社 松尾篤 1

Slide 2

Slide 2 text

Windows版PHPのビルド手順とPHP 8.4における変更点 トークの概要 はじめに • Windows版PHPのビルド手順および最新情報を紹介 2

Slide 3

Slide 3 text

Windows版PHPのビルド手順とPHP 8.4における変更点 このトークで伝えたいこと はじめに • さまざまなプラットフォームで動作するPHPはWindows環境でも動作 • Windows版PHPの開発は現在も積極的に行われているものの開発に貢献 できる箇所はたくさんある • 少ない人数の有志に開発を依存している状況なので興味を持った方は是非 コントリビュートを 3

Slide 4

Slide 4 text

Windows版PHPのビルド手順とPHP 8.4における変更点 今回の話題 はじめに • Windows版PHPの入手方法 • Windows版PHP 8.4における変更点 • Windows版PHPのビルドに必要なもの • Windows版PHPのビルド手順 • Windows版PHPの依存ライブラリはどのように作成されているのか 4

Slide 5

Slide 5 text

Windows版PHPのビルド手順とPHP 8.4における変更点 自己紹介 はじめに 松尾篤 • PHP使用歴:約20年 • PHPを使った開発歴は約17年 • 2023年4月にGaroon開発チームに加入 • PHPを使用しているGaroonはWindows Server向けのパッケージ版も提供 • Mac使用歴:約30年 • 漢字Talk 7.1以来のMacユーザー 5

Slide 6

Slide 6 text

Windows版PHPの入手方法 6

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

Windows版PHP 8.4における変更点 10

Slide 11

Slide 11 text

Windows版PHPのビルド手順とPHP 8.4における変更点 最新バージョンはPHP 8.4 Windows版PHP 8.4における変更点 • 2024年11月にPHP 8.4がリリース • 2025年3月時点の最新バージョンはPHP 8.4.5 11

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

Windows版PHPのビルド手順とPHP 8.4における変更点 マニュアルに明記されていない変更点 Windows版PHP 8.4における変更点 • PHP SDKが参照するWindows版依存ライブラリの配置先URLが変更 14

Slide 15

Slide 15 text

Windows版PHPのビルド手順とPHP 8.4における変更点 マニュアルに明記されていない変更点 Windows版PHP 8.4における変更点 • libXpmがgd拡張モジュールの依存ライブラリとして必須ではなくなった • https://github.com/php/php-src/pull/15846/files 15

Slide 16

Slide 16 text

Windows版PHPのビルドに必要なもの 16

Slide 17

Slide 17 text

Windows版PHPのビルド手順とPHP 8.4における変更点 ソースコードからビルドすることが必要になるケース Windows版PHPのビルドに必要なもの • PHPを改造するパッチを当てる必要がある場合 • 公式で修正済みバージョンが公開されていない状況で製品およびサービス に影響する不具合や脆弱性を改修したい場合 • 社内の開発・運用ポリシーでビルドが推奨されている場合 • etc. 17

Slide 18

Slide 18 text

Windows版PHPのビルド手順とPHP 8.4における変更点 Windows版PHPをソースコードからビルドする際に必要になるもの Windows版PHPのビルドに必要なもの • Visual Studio • Microsoft Windows • Git • PHP SDK • PHPのソースコード • PHPの依存ライブラリ 18

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Windows版PHPのビルド手順とPHP 8.4における変更点 Visual Studio 2022 Windows版PHPのビルドに必要なもの • PHP 8.4の場合はVisual Studio 2022(Visual C++ 17.0)が必要 • 「C++ によるデスクトップ開発」にチェックをつけてインストール 20

Slide 21

Slide 21 text

Windows版PHPのビルド手順とPHP 8.4における変更点 Git Windows版PHPのビルドに必要なもの • Gitの公式サイトから入手可能 • https://git-scm.com/downloads/win • 64ビット版のGit for Windowsをダウンロードおよびインストール 21

Slide 22

Slide 22 text

Windows版PHPのビルド手順 22

Slide 23

Slide 23 text

Windows版PHPのビルド手順とPHP 8.4における変更点 Windows版PHP 8.4のビルド Windows版PHPのビルド手順 • CLI(コマンドラインインターフェース)でビルド • 64ビット版をビルドする場合 • x64 Native Tools Command Prompt for VS 2022を起動 23

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

Windows版PHPのビルド手順とPHP 8.4における変更点 PHPのコンパイル Windows版PHPのビルド手順 • buildconf • configure --enable-cli • nmake • .\x64\Release_TS\php.exe -v 28

Slide 29

Slide 29 text

Windows版PHPのビルド手順とPHP 8.4における変更点 テストを実行する場合 Windows版PHPのビルド手順 • nmake test 29

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

Windows版PHPの依存ライブラリは どのように作成されているのか 31

Slide 32

Slide 32 text

Windows版PHPのビルド手順とPHP 8.4における変更点 依存ライブラリ作成の流れ Windows版PHPの依存ライブラリはどのように作成されているのか • Windows版PHPが依存するライブラリの作成はGitHub Actionsを使って 半自動化されている状況 32

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

Windows版PHPのビルド手順とPHP 8.4における変更点 依存ライブラリ作成の流れ Windows版PHPの依存ライブラリはどのように作成されているのか • 現状の問題点 • アップロードできる人が限られている • プロセスに透明性がない • 履歴が残っていない • 手動更新なので間違いが発生しやすい 34

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

まとめ 36

Slide 37

Slide 37 text

Windows版PHPのビルド手順とPHP 8.4における変更点 このトークで伝えたかったこと まとめ • さまざまなプラットフォームで動作するPHPはWindows環境でも動作 • Windows版PHPの開発は現在も積極的に行われているものの開発に貢献 できる箇所はたくさんある • 少ない人数の有志に開発を依存している状況なので興味を持った方は是非 コントリビュートを 37

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

©️ Cybozu, Inc. 39