ITブログ

Windows+NGINX+PHP環境構築

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ソケットでセットアップするように書かれています。
 
1.png
 
まずはPHP8をPHP公式サイトからダウンロードします。
"PHP For windows" の "Downloads" ページから、"VS16 x64 Non Thread Safe" のZipをダウンロードします。
 
2.png
 
ダウンロードしたZipファイルを解凍して配置します。
ここでは "C:\work\php-8.2.5-nts-Win32-vs16-x64" に配置します。
3.png
 
ここから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設定)
4.png
 
コメントアウトを外し、黄色網掛けの部分を追加・変更します。
以下のような内容を指定しています。
・インデックスファイル名として、"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;
}
 
修正後nginx.conf
4.5.png
 
"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
 
10.png
 
※php-cgi.exeの実行時に以下のシステムエラーが出た場合
5.png
 
PHPの公式サイトのインストール要件にも書かれていますが、PHPを動作させるためにVisual Cランタイムがインストールされている必要があります。
 
6.png
 
Visual Cランタイムは以下のURLからダウンロードできます。
 
7.png
8.png
 
ダウンロード出来たらVisual Cランタイムをインストールします。
9.png
 
 
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は正しく連携して動作しています。
13.png
 
NGINXとPHPの開始・停止をダブルクリックで簡単に実施するためにバッチファイルを用意すると便利です。
パスは環境に合わせて指定してください。
 
開始バッチ: start_nginx_php.bat
@echo off
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
 
停止バッチ: stop_nginx_php.bat
@echo off
taskkill /im php-cgi.exe /F
 
cd C:\work\nginx-1.24.0
nginx -s stop
 
 
NGINX+PHPが動作することを確認したら、"nginx.conf" と "php.ini" を要件に合わせて設定してください。