PHP-FPM-test

Dockerのphp-fpmコンテナを使用しているときに、動作確認をしてみたくなった時のメモ

インストール

Alipine Linuxなら、

1
# apk add fcgi

Debian GNU/Linuxなら、

1
$ sudo apt install libfcgi-bin libfcgi0ldbl

使い方は、こんな感じ

1
2
3
4
5
6
7
8
9
10
11
# cgi-fcgi
Missing application pathname
Missing -connect <connName>
Usage:
cgi-fcgi -f <cmdPath> , or
cgi-fcgi -connect <connName> <appPath> [<nServers>] , or
cgi-fcgi -start -connect <connName> <appPath> [<nServers>] , or
cgi-fcgi -bind -connect <connName> ,
where <connName> is either the pathname of a UNIX domain socket
or (if -bind is given) a hostName:portNumber specification
or (if -start is given) a :portNumber specification (uses local host).

確認用HTML

/var/www/html/index.phpに確認用PHPファイルを設置した。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$message = 'Hello,world';
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>PHP-FPM test</title>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>

<![endif]-->
<style>
article, aside, dialog, figure, footer, header,
hgroup, menu, nav, section { display: block; }
</style>
</head>
<body>
<p><?php echo $message; ?></p>
</body>
</html>

php-fpmのパスを確認する

1
2
3
4
5
6
7
8
9
10
# grep -v "^;" /usr/local/etc/php-fpm.d/www.conf | grep -v "^$"
[www]
user = www-data
group = www-data
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

php-fpmのソケットのパスは127.0.0.1:9000。

確認用スクリプト

1
2
3
4
5
6
#!/bin/ash

SCRIPT_NAME=index.php \
SCRIPT_FILENAME=/var/www/html/index.php \
REQUEST_METHOD=GET \
cgi-fcgi -bind -connect 127.0.0.1:9000

確認

確認用スクリプトを実行すると、PHPが実行されているのが確認できる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# /bin/ash test.sh
X-Powered-By: PHP/7.4.26
Content-type: text/html; charset=UTF-8

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>PHP-FPM test</title>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>

<![endif]-->
<style>
article, aside, dialog, figure, footer, header,
hgroup, menu, nav, section { display: block; }
</style>
</head>
<body>
<p>Hello World</p>
</body>
</html>