よっしー
こんにちは。よっしーです(^^)
今日は、Docker環境でPHPのビルトインサーバの実行環境を構築する方法について解説しています。
背景
PHPのビルトインサーバを利用した環境を構築する機会がありましたので、その時の内容を備忘として記事に残しました。
前回の記事は、ビルトインサーバを起動させる方法について解説しています。
ファイル一覧
下記のファイルを作成しました。この記事では、これらのファイルを使用した動作確認を解説しています。
modified: php_server/src/router.php
new file: php_server/src/info.php
php_server/src/router.php
緑色のセンテンスを追加しています。
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
return false; // リクエストされたリソースをそのままの形式で扱います。
+} elseif (preg_match('/info\.php$/', $_SERVER["REQUEST_URI"])) {
+ return false; // リクエストされたリソースをそのままの形式で扱います。
} else {
echo "<p>Welcome to PHP</p>";
}
このコードは PHP の一部で、ウェブアプリケーションのリクエストされたリソースを処理する際に使用されます。以下に詳細を解説します。
- preg_match(‘/info.php$/’, $_SERVER[“REQUEST_URI”]):
- この行は 正規表現 を使って、リクエストされたURLが「info.php」で終わっているかどうかをチェックしています。
$_SERVER["REQUEST_URI"]
は、クライアントからのリクエストのURI(Uniform Resource Identifier)を取得します。- 正規表現
/info\.php$/
は、URIが「info.php」で終わっているかどうかを検証します。
- return false;:
- もしリクエストされたURIが「info.php」で終わっている場合、この行は
false
を返します。 - つまり、リクエストされたリソースをそのままの形式で扱うことを意味します。
- 通常、ウェブアプリケーションでは、リクエストされたリソースに対して適切な処理を行いますが、この条件では特定のリソースを無視しています。
- もしリクエストされたURIが「info.php」で終わっている場合、この行は
- このコードは セキュリティ上の観点 から重要です:
- 「info.php」などの特定のファイルを直接公開しないようにするために使用されます。
- 例えば、攻撃者が「info.php」にアクセスしてシステム情報を取得しようとする場合、このコードによってアクセスを拒否できます。
このコードは、ウェブアプリケーションのセキュリティを強化するために役立ちますが、正確なコンテキストによって意味が変わることに注意してください。
php_server/src/info.php
<?php
echo phpinfo();
このコードは phpinfo() 関数を使用しています。
- phpinfo() 関数とは?
- phpinfo() は、PHPに設定されている情報を表示させる関数です。
- 主に以下の目的で使用されます:
- php.ini という設定ファイルに変更を加えた際、その変更が反映されているかを確認する場面で使われます。
- 現在の「PHP」の状態についてのあらゆる情報を表示する関数ですが、使いどころは限られています。
- phpinfo() 関数を使うにあたっての注意点:
- WordPress 5.2以降を使っている場合はphpinfoを使わなくていい:
- WordPressはバージョン5.2から「サイトヘルス機能」というタブで環境の詳細情報を得られる機能を追加しています。
- より詳細な情報を把握したい場合に限り、phpinfo を利用します。
- サイト情報がすべて外部に見えてしまうのでリスクが高い:
- phpinfo はサイトに関するさまざまな情報を表示するため、公開されているWordPressのサイトで実行するのは非常にリスクが高いです。
- 主にローカル環境で使用します。
- WordPress 5.2以降を使っている場合はphpinfoを使わなくていい:
- phpinfo() 関数の使い方:
- ブラウザにPHP情報を表示させる:
- テキストエディタで以下のコードを作成します:
<?php phpinfo(); ?>
- ファイル名は何でも構いませんが、拡張子を「.txt」から「.php」に変更して保存します。
- 保存したファイルをローカル環境のドキュメントルートに移動し、ローカルサーバーを起動します。
- ブラウザのアドレスバーに「localhost/phpinfo.php」を入力して、PHPの設定情報が表示されます。
- テキストエディタで以下のコードを作成します:
- コマンドラインにPHP情報を表示させる:
- コマンドプロンプトを開き、以下のコマンドを入力して実行します:
php -r phpinfo();
- コマンドライン表示は表にまとめられずに文字だけが表示されるため、可読性は悪くなりますが、詳細な情報が得られます。
- コマンドプロンプトを開き、以下のコマンドを入力して実行します:
- ブラウザにPHP情報を表示させる:
- phpinfo() 関数を使うPHPファイルは確認後に削除しましょう。必要な場面で慎重に使用しましょう。
動作確認
下記のコマンドを実行します。
make build
make up
ブラウザで「http://localhost:8080/info.php」にアクセスします。
上記のような結果になっていれば、成功です。
おわりに
今日は、Docker環境でPHPのビルトインサーバの実行環境を構築する方法について解説しました。
よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント