🦔

TermuxでPHP

に公開

上記の記事の詳細記事です。

php関連のインストール

~ $ pkg install nginx php-fpm

nginxは有名なWebサーバーです。
php-fpmはPHPにおけるFastCGI実装です。Termuxのパッケージとしては、一緒にphpも入ります。

nginxの設定

まずはnginxがphp-fpmを呼べるように設定します。

$PREFIX/etc/nginx/nginx.conf
        server_name  localhost;

という部分を以下のように変えます。

$PREFIX/etc/nginx/nginx.conf
        server_name  localhost;
        # 追加
        root         /data/data/com.termux/files/usr/share/nginx/html;

サーバーのデフォルトのドキュメント格納場所を

$PREFIX/share/nginx/html

に設定しています。

さらに以下の部分を

$PREFIX/etc/nginx/nginx.conf
        location / {
            root   /data/data/com.termux/files/usr/share/nginx/html;
            index  index.html index.htm;
        }

という部分を以下のように変えます。

$PREFIX/etc/nginx/nginx.conf
        location / {
            #root   /data/data/com.termux/files/usr/share/nginx/html;
            #index  index.html index.htm;
            index  index.html index.htm index.php;
        }

/で終わるURLで/index.phpも見に行くようになります。

さらに以下の部分を

$PREFIX/etc/nginx/nginx.conf
        location = /50x.html {
            root   /data/data/com.termux/files/usr/share/nginx/html;
        }

という部分を以下のように変えます。

$PREFIX/etc/nginx/nginx.conf
        location = /50x.html {
            #root   /data/data/com.termux/files/usr/share/nginx/html;
        }

rootの設定を統一するためにコメントにしています。

さらに以下の部分を

$PREFIX/etc/nginx/nginx.conf
        #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;
        #}

以下のように変えます。

$PREFIX/etc/nginx/nginx.conf
        #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;
        #}
        location ~ \.php$ {
            fastcgi_pass   unix:/data/data/com.termux/files/usr/var/run/php-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

これが受け渡しの設定です。このphp-fpmはUnixドメインソケットで動いてるので、そちらに必要なパラメータを渡す設定になります。

PHP(web)を動かす

両サービスを(手動)起動するだけです。
nginxは拡張子が.phpのファイルの場合、php-fpmに処理を任せます。

~ $ nginx
~ $ php-fpm

どちらもバックグラウンドで動くので、これで起動完了です。

nginx動作確認

ブラウザから http://localhost:8080/ を開けばnginxの動作確認ができます。

nginx起動画面

php-fpm動作確認

$PREFIX/share/nginx/html/info.php を以下の内容で作成します。

$PREFIX/share/nginx/html/info.php
<?php
phpinfo();
?>

ブラウザから http://localhost:8080/info.php を開けばphp-fpmとphpの動作確認ができます。

php確認画面

PHP(web)を停止する

~ $ pkill nginx
~ $ pkill php-fpm
GitHubで編集を提案

Discussion