PHP/開発用簡易Webサーバ

PHP/開発用簡易Webサーバ

PHP は簡易的なサーバ機能があって、このようにコマンドを打つと立ち上がる。

$ php -S localhost:3000 hoge.php

このコマンドを打ったディレクトリがドキュメントルートとしてルーティングされる(設定でずらせる)。 この状態で http://localhost:3000/ にアクセスするとドキュメントルートが見れる。

当然 PHP のサーバなので、PHP ファイルにアクセスすることで PHP が実行される。

パラメータの最後につけているの php ファイル(hoge.php)は httpd.conf 的なモノを書くことができるファイルになる。 この PHP ファイルをルータースクリプトといって入力と出力を制御できるようになる。

ルータースクリプト

普通にリクエストを素通しする

スクリプトから false を返すと、単にディレクトリにアクセスしたのと同じようになる

return false;

画面に出力する

普通のPHPと同様に echo するとそれが出力される

echo "hogehoge";

mime 設定に沿ってヘッダーを吐く

これはどういう状況で要るかというと、CSS を PHP が動的に吐き出す場合だ。 mime が合ってないとブラウザは CSSCSS と認識してくれず、ファイルはロードされているのにスタイルが当たらないという状況になる。

これも PHP そのまんま header関数で押し込む

header("Content-Type: " . $mime_type);

ファイルを吐く

readfile 関数を呼べばいい

readfile($path);

アクセス情報を取得する

あの $_SERVER スーパーグローバル変数が使えるのでここから全部引き出せる。

拡張子 .html 以外のファイルを表示する

wget 等でぶっこ抜いたようなファイルを表示したい場合、ファイル名と拡張子が一致しておらず ブラウザに表示されない場合がある。

そここで Content-Type を指定してやることで表示できるようにする

$url = $_SERVER["SCRIPT_NAME"];
$f =$_SERVER["SCRIPT_FILENAME"];
if($url == "/hoge"){
    header("Content-Type: text/html");
    readfile($f);
    return false;
}
php/dev/easy_web_server_for_dev.txt · 最終更新: 2019-07-08 19:13 by ore