Windows に PHP をインストール
〜 Windows10/11 版 〜
2024-11-11 作成 福島
TOP > tips > php-win11
[ TIPS | TOYS | OTAKU | LINK | MOVIE | CGI | AvTitle | ConfuTerm | HIST | AnSt | Asob | Shell ]


0. 前置き

本稿では、NTS 版をインストールします。
インストールと言っても、ファイルを展開して設置するだけ。

PHP は Windows で動作する選択肢として、以下の 2 種類があります。
種別意味mod_php の使用
 TS スレッドセーフあり版Web サーバと同化して動作する使用する
 NTS スレッドセーフなし版Web サーバと同化せず、外部委託として動作する使用しない
mod_php とは、Web サーバに組み込まれる PHP インタプリタの事です。
RedHat では mod_php が非推奨になりました。
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/) を開き、
VSxx x64 Non Thread Safe (yyyy-Mmm-dd hh:mm:ss) の直下にある
Zip をクリックして PHP のパッケージをダウンロードする。
今回は php-8.3.13-nts-Win32-vs16-x64.zip だった。
1-2. パッケージを展開してフォルダを変更
ダウンロードしたパッケージを展開するとフォルダ .\php-8.3.13-nts-Win32-vs16-x64\ が作成されるので、
これを .\php-8\ へ名称変更し、フォルダごと C:\ に移動する。
→ C:\php-8\ にする。
1-3.「システムのプロパティ」を開く
• Windows11 の場合
スタート - 設定 - システム - バージョン情報 - システムの詳細設定
• Windows10 の場合
スタート - 設定 - システム - 詳細設定 - システムの詳細設定
1-4. 実行パスを設定
「システムのプロパティ」画面

をクリックする。
 ⇓
「環境変数」画面
xxxx のユーザー環境変数(U) の「Path」を選択し、 ボタンをクリックする。
(xxxx は自分のユーザ ID)
 ⇓
「環境変数名の編集」画面
をクリックすると、リストの最終行に入力欄が現れるので、ここに
⏎ を記入して ボタンをクリックする。


2. Visual C++ 再頒布可能パッケージの確認

PowerShell を実行
スタート (右クリック) から「ターミナル」を選択。(Windows10 は「Windows PowerShell(I)」を選択)

下線部の表示が無い場合は、このページの「X64」が示す vc_redist.x64.exe をダウンロードしてインストールする。
→「ライセンス条項および使用条件に同意する」にチェックを入れ ボタンをクリックする。

− □ × 
 >_ 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 

今回ダウンロードした PHP は vs16 (Visual Studio 2019 でコンパイルされた) で、
再頒布可能パッケージの  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