Windows+NGINXが動作する環境にPHP8をインストールして、PHPの実行環境を構築します。
事前にWindows+NGINXの環境を構築します。
Windows+NGINX環境構築手順の記事はこちらです。
後半のバッチファイル作成はこちらの記事を参考にさせていただきました。
FastCGIとしてPHPを動かし、NGINXと連携させます。CGIで動作させるため、"Non Thread Safe" (NTS)版を選択します。
NGINX公式サイトのPHP FastCGI実行例はこちらです。
PHPをインストールして、TCP(127.0.0.1:9000)またはUNIXソケットでセットアップするように書かれています。
まずはPHP8をPHP公式サイトからダウンロードします。
"PHP For windows" の "Downloads" ページから、"VS16 x64 Non Thread Safe" のZipをダウンロードします。
ダウンロードしたZipファイルを解凍して配置します。
ここでは "C:\work\php-8.2.5-nts-Win32-vs16-x64" に配置します。
ここからNGINXとPHPを連携させます。
NGINX公式サイトのPHP FastCGI実行例を参考に "nginx.conf" を修正します。
NGINXを "C:\work\nginx-1.24.0" にインストールした場合、"nginx.conf" のパスは "C:\work\nginx-1.24.0\conf\nginx.conf" になります。
"nginx.conf" にはPHPをFastCGIで連携する場合の設定内容がコメントアウトされた状態で含まれています。これを活かして設定します。
修正前nginx.conf(コメントアウトされたPHP FastCGI設定)
コメントアウトを外し、黄色網掛けの部分を追加・変更します。
以下のような内容を指定しています。
・インデックスファイル名として、"index.php" も有効にする。
・指定されたスクリプト名(~.php)が存在しない場合、404エラーを返す。
・~.phpがリクエストされた場合、リバースプロキシとして動作して、"127.0.0.1:9000" に接続する。
・FastCGIは 127.0.0.1:9000 で動作している。
・スクリプトファイルはドキュメントルート下に設置する。
~
location / {
root html;
index index.html index.php;
}
~
location ~ \.php$ {
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
root html;
fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
~
location / {
root html;
index index.html index.php;
}
~
location ~ \.php$ {
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
root html;
fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
~
修正後nginx.conf
"nginx.conf" を修正したらNGINXを起動します。
コマンドプロンプトを起動して、"start nginx" を実行します。パスは環境に合わせて指定してください。
NGINXを "c:\work\nginx-1.24.0" に配置した場合は以下になります。
cd c:\work\nginx-1.24.0
start nginx
PHPをFastCGIで起動します。ポートはnginx.confで指定した9000番を使います。
PHPを "c:\work\php-8.2.5-nts-Win32-vs16-x64" に配置した場合は以下になります。
cd C:\work\php-8.2.5-nts-Win32-vs16-x64
start php-cgi -b 127.0.0.1:9000
start php-cgi -b 127.0.0.1:9000
※php-cgi.exeの実行時に以下のシステムエラーが出た場合
PHPの公式サイトのインストール要件にも書かれていますが、PHPを動作させるためにVisual Cランタイムがインストールされている必要があります。
Visual Cランタイムは以下のURLからダウンロードできます。
ダウンロード出来たらVisual Cランタイムをインストールします。
NGINXとPHPが起動したらPHPの動作を確認します。
NGINXのドキュメントルートに "test.php" を作成して以下の内容を記載します。
ドキュメントルートが "C:\work\nginx-1.24.0\html\" の場合、C:\work\nginx-1.24.0\html\test.php となります。
<?php phpinfo();
ブラウザで http://localhost/test.php にアクセスして以下のような画面が表示されればNGINXとPHPは正しく連携して動作しています。
NGINXとPHPの開始・停止をダブルクリックで簡単に実施するためにバッチファイルを用意すると便利です。
パスは環境に合わせて指定してください。
開始バッチ: start_nginx_php.bat
@echo off
cd C:\work\nginx-1.24.0
start nginx
cd C:\work\nginx-1.24.0
start nginx
cd C:\work\php-8.2.5-nts-Win32-vs16-x64
start php-cgi -b 127.0.0.1:9000
start php-cgi -b 127.0.0.1:9000
停止バッチ: stop_nginx_php.bat
@echo off
taskkill /im php-cgi.exe /F
cd C:\work\nginx-1.24.0
nginx -s stop
nginx -s stop
NGINX+PHPが動作することを確認したら、"nginx.conf" と "php.ini" を要件に合わせて設定してください。