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のダウンロード
PHP 8.1系の最新である
PHP 8.1.2(2022年2月14日)の【Windows downloads】を押下します。
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の設定
【スタート】⇒【Windows 管理ツール】
⇒【インターネット インフォメーション サービス マネージャー】
(左側の)サーバーをクリック ⇒ [ハンドラーマッピング]
(右側の)モジュールマップの追加
要求パス:[*.php]
実行可能ファイル:[C:\PHP-NTS\8.1\php-cgi.exe]
名前:[PHP81]
と入力し【OK】を押下します。
確認画面が表示されるので【OK】を押下します。
PHPの設定と確認
【Windows PowerShell(管理者)】を押下します。
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】でした。ハマりポイント(自戒)
インターネットブラウザ
http://(サーバーIPアドレス)/info.php
で稼働確認が可能です。