見出し画像

Windows Server 2019のIIS(Webサーバー)でPHPを使う

ApacheやNginxを使っているインフラ管理者の中にはPHPでプログラム開発を行っている方はいらっしゃいますよね?
(2022年2月現在でGoを利用できるプログラマの価値が上がっているようです。なお、Java・PHP・Pythonの需要は大きいようですがプログラマも多い為、価値は・・・のようですね。日本においてはプログラマの価値を低く見られがちだと思います。価値が低い=育てる余裕が無い=価値が下がるという悪循環に陥っているように感じます。生活基盤インフラとしてあらゆるシステムが必要であることを考えると、プログラマが育つ環境が欲しいですね。)
さて、そこでIIS(Webサーバー)からPHPを使用できるように設定します。

IISの設定

[アプリケーション開発]の[CGI]にチェックを入れてください。
詳しくは【Windows Server 2019にWebサーバー(IIS)の機能を追加】をご確認ください。

PHPのダウンロード

https://www.php.net/downloads

画像1

PHP 8.1系の最新である
PHP 8.1.2(2022年2月14日)の【Windows downloads】を押下します。

画像2

IISで使用するときは【Non Thread Safe】を使用します。
【Zip】をダウンロードしてください。
※php-8.1.2-nts-Win32-vs16-x64.zip

ついでに、PHP 7.4系の最新である
PHP 7.4.27(2022年2月14日)もダウンロードしておくと
※php-7.4.27-nts-Win32-vc15-x64.zip
8.1系で動かないPHPスクリプトが動く可能性があります。

さらに念のためVC++の再頒布可能パッケージをダウンロードします。

【x64】を押下してダウンロードします。
※VC_redist.x64.exe

PHP用のフォルダの作成

フォルダの作成:C:\PHP-NTS

先にダウンロードした、PHP 8.1 及び PHP 7.4 の最新版を解凍する。

解凍したファイルを
  C:\PHP-NTS\8.1\php.exe
  C:\PHP-NTS\7.4\php.exe
となるように設置する。
(解答でできたフォルダをリネーム後にC:\PHP-NTSフォルダに移動)

PHP-CGIの動作環境チェック

C:\PHP-NTS\8.1\php-cgi.exe
をエクスプローラーがダブルクリックで実行する。

上記のようにVCRUNTIME140.dllが見つからない場合、先にダウンロードした【VC++の再頒布可能パッケージ】を実行してインストールしてください。

上記のように真っ黒の画面が表示されれば【Ctrl】+【C】で切断してください。(環境はOKです)

IISの設定

画像3

【スタート】⇒【Windows 管理ツール】
 ⇒【インターネット インフォメーション サービス マネージャー】

画像4

(左側の)サーバーをクリック ⇒ [ハンドラーマッピング]

画像5

(右側の)モジュールマップの追加

画像10

要求パス:[*.php]
実行可能ファイル:[C:\PHP-NTS\8.1\php-cgi.exe]
名前:[PHP81]
と入力し【OK】を押下します。

画像7

確認画面が表示されるので【OK】を押下します。

PHPの設定と確認

画像8

【Windows PowerShell(管理者)】を押下します。

画像9
PowerShellの場合
copy C:\PHP-NTS\8.1\php.ini-production C:\PHP-NTS\8.1\php.ini
copy C:\PHP-NTS\7.4\php.ini-production C:\PHP-NTS\7.4\php.ini

echo "<?php phpinfo(); ?>" | Out-File -Encoding default C:\IIS\SITE\DefaultPage\info.php

PHPを実行するために【php.ini-production】を【php.ini】に変更します。
※今後【php.ini】は動かす要件に合わせて変更します。
PHPが動いているか確認するために
 <?php phpinfo(); ?>
と記載した【info.php】をIISのホームディレクトリに準備します。
※PowerShellの言語が【Unicode】でした。ハマりポイント(自戒)

画像10

インターネットブラウザ
 http://(サーバーIPアドレス)/info.php
で稼働確認が可能です。

いいなと思ったら応援しよう!