HTTPヘッダ・クエリ文字列を表示するPHPサンプルコード
以前にHTTPヘッダを表示するPHPサンプルコードというメモを書きました。左記のメモに加え、「HTTPクエリ文字列も表示する」ように修正したサンプルコードをメモしておきます。
以前にHTTPヘッダを表示するPHPサンプルコードというメモを書きました。左記のメモに加え、「HTTPクエリ文字列も表示する」ように修正したサンプルコードをメモしておきます。
Web のテストを行う場合、「サーバ側で HTTP リクエストがどう見えているか?」が分かると便利な場合があります。 「Web サーバのログを確認する」「パケットをキャプチャする」などの選択肢があると思いますが、いずれもやや面倒です。 こういった場合、もし PHP が使えるのであれば「PHP スクリプトで HTTP ヘッダを表示させる」という方法があります。 今回はそういったケースで使える PHP のサンプルスクリプトをメモしておきます。
以前に Nginx 関連で下記のメモを書きました。
今回は Rocky Linux 8 上の Nginx と PHP 8.1 環境へ、更に h5ai をインストールして DirectoryIndex の見栄えを改善してみましたので、手順をメモしておきます。 Nginx と PHP をインストールするまでの手順は過去のメモと同じです。
Rocky Linux 8 へ Nginx と PHP 8.1 をインストールする手順をメモしておきます。 PHP は remi からインストールしました。
Nginx をインストールします。
remi から PHP をインストールします。 敢えて現時点で最新のバージョン 8.1 をインストールしてみました。
php-fpm の設定ファイルは /etc/opt/remi/php81/php-fpm.d/www.conf にあります。 ユーザやグループ等の設定を書き換えます。 デフォルトでは listen.acl_users で POSIX ACL が有効になっていた為、これを無効化して listen.owner や listen.group を利用出来るようにしています。
sed -i -e "s/^user = apache/user = nginx/g" /etc/opt/remi/php81/php-fpm.d/www.conf
sed -i -e "s/^group = apache/group = nginx/g" /etc/opt/remi/php81/php-fpm.d/www.conf
sed -i -e "s/^;listen.owner = nobody/listen.owner = nginx/g" /etc/opt/remi/php81/php-fpm.d/www.conf
sed -i -e "s/^;listen.group = nobody/listen.group = nginx/g" /etc/opt/remi/php81/php-fpm.d/www.conf
sed -i -e "s/^;listen.mode = 0660/listen.mode = 0660/g" /etc/opt/remi/php81/php-fpm.d/www.conf
sed -i -e "s/^listen.acl_users = apache/;listen.acl_users = apache/g" /etc/opt/remi/php81/php-fpm.d/www.conf
Nginx の設定ファイルのうち、/etc/nginx/conf.d/default.conf を以下のように修正します。 拡張子 .php のファイルは UNIX ソケット経由で php-fpm へ転送します。
cat << 'EOF' > /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
root /usr/share/nginx/html;
fastcgi_pass unix:/var/opt/remi/php81/run/php-fpm/www.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
EOF
phpinfo を呼び出すテスト用ファイルを作成します。
ここまでの準備が完了したら Nginx と php-fpm を起動&自動起動設定します。
systemctl start nginx.service php81-php-fpm.service
systemctl enable nginx.service php81-php-fpm.service
ブラウザから http://ADDRESS/info.php へアクセスし、phpinfo の内容が表示されれば正常です。

/etc/nginx/conf.d/default.conf の初期内容server {
listen 80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
Amazon Linux2 に PHP 7.4 をインストールする手順をメモしておきます。
EPEL と remi を有効化し、remi から PHP をインストールします。
yum -y install \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum -y install --enablerepo=remi-php74 php74
今回は PHP 7.4.12 がインストールされました。
LB のテストをする際は Web サーバに「分散対象になったサーバのホスト名やアドレス、アクセス日時」等を表示させるスクリプトを置いておくと便利です。具体的には以下のような PHP スクリプトを置いて試験することが多いです。
CentOS7 に php7 をインストールする方法をメモしておきます。epel & remi リポジトリを追加した後、yum で簡単にインストール可能です。
PHP: date - Manual によると、php の date 関数は PHP 5.2.2 以降でマイクロ秒を表示する書式「u」をサポートしたそうです。試験環境でこの関数とオプション(マイクロ秒の表示)を使う必要があったのですが、手元の CentOS 5.6 では PHP のバージョンが 5.1.6 であった為、マイクロ秒表示のオプションを使うことが出来ません。
## php --version
PHP 5.1.6 (cli) (built: Nov 29 2010 16:47:46)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
そこで PHP のバージョンを上げることにしました。