0. 前置き
本稿では、NTS 版をインストールします。
インストールと言っても、ファイルを展開して設置するだけ。
PHP は Windows で動作する選択肢として、以下の 2 種類があります。
RedHat では mod_php が非推奨になりました。mod_php とは、Web サーバに組み込まれる PHP インタプリタの事です。
種別 意味 mod_php の使用 TS スレッドセーフあり版 Web サーバと同化して動作する 使用する NTS スレッドセーフなし版 Web サーバと同化せず、外部委託として動作する 使用しない
Windows にも FastCGI があるので、今後 TS 版は終息していくことが見込まれます。
IIS や Windows 版 Apache と mod_php を使うなら TS 版を、それ以外なら NTS 版をインストールします。
「それ以外」とは Web サーバから CGI として呼ばれる場合や、Web サーバと連動せず単体で動作する場合を指します。
(PHP 公式の説明はここ)
「スレッド」(マルチスレッドの略) というのは、複数のスレッド (処理フロー) が同じメモリ空間で動作することであり*1、
設計が柔軟で高速動作が可能な反面、十分に気を付けないと簡単にメモリリークが頻出することを意味します。
それを考慮して複雑に作られたのが TS 版*2であり、考慮せずに高速化と単純化を狙ったのが NTS 版*3です。
高機能 OS ではマルチプロセスとマルチスレッドの両方を使えますが、マルチスレッドしか使えない Windows では、
面倒な処理をアプリケーションの構造によって解決することが要求されます。
*1 Linux の「フォーク」はメモリ空間も分離されるのでメモリリークが発生しない。
*2 Thread Safe: スレッドでもメモリが安全。(メモリをロックしながら動作する)
*3 Non Thread Safe: スレッドのシステムに組み込むとメモリが危険。
1. PHP を設置
1-1. PHP の公式ページからパッケージをダウンロード
ダウンロードページ (https://windows.php.net/download/) を開き、1-2. パッケージを展開してフォルダを変更
VSxx x64 Non Thread Safe (yyyy-Mmm-dd hh:mm:ss) の直下にある
• Zip をクリックして PHP のパッケージをダウンロードする。
今回は php-8.3.13-nts-Win32-vs16-x64.zip だった。
ダウンロードしたパッケージを展開するとフォルダ .\php-8.3.13-nts-Win32-vs16-x64\ が作成されるので、1-3.「システムのプロパティ」を開く
これを .\php-8\ へ名称変更し、フォルダごと C:\ に移動する。
→ C:\php-8\ にする。
• Windows11 の場合1-4. 実行パスを設定
スタート - 設定 - システム - バージョン情報 - システムの詳細設定• Windows10 の場合
スタート - 設定 - システム - 詳細設定 - システムの詳細設定
「システムのプロパティ」画面
をクリックする。
⇓
「環境変数」画面
xxxx のユーザー環境変数(U) の「Path」を選択し、 ボタンをクリックする。
(xxxx は自分のユーザ ID)
⇓
「環境変数名の編集」画面
をクリックすると、リストの最終行に入力欄が現れるので、ここに
⏎ を記入して ボタンをクリックする。
2. Visual C++ 再頒布可能パッケージの確認
PowerShell を実行
スタート (右クリック) から「ターミナル」を選択。(Windows10 は「Windows PowerShell(I)」を選択)
下線部の表示が無い場合は、このページの「X64」が示す vc_redist.x64.exe をダウンロードしてインストールする。
→「ライセンス条項および使用条件に同意する」にチェックを入れ ボタンをクリックする。
今回ダウンロードした PHP は vs16 (Visual Studio 2019 でコンパイルされた) で、
− □ × >_ Windows PowerShell × + | ∨
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows PS C:\> # 再頒布可能パッケージのバージョンを確認する PS C:\> Get-WmiObject -Query "SELECT * FROM Win32_Product" | Select-Object Name | Select-String Runtime ⏎ @{Name=Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816} @{Name=Microsoft Visual C++ 2022 X64 Additional Runtime - 14.40.33816} PS C:\> exit ⏎
再頒布可能パッケージの Minimum Runtime - xx. … が 16 以下のバージョンなら OK。
(ちなみに vs17 が Visual Studio 2022)
3. PHP を確認
PowerShell を実行
スタート (右クリック) から「ターミナル」を選択。(Windows10 は「Windows PowerShell(I)」を選択)
− □ × >_ Windows PowerShell × + | ∨
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows PS C:\> # PHP のバージョンを確認する PS C:\> php -v ⏎ PHP 8.3.13 (cli) (built: Oct 22 2024 21:07:34) (NTS Visual C++ 2019 x64) Copyright (c) The PHP Group Zend Engine v4.3.13, Copyright (c) Zend Technologies PS C:\> exit ⏎