例えば本番環境で "*.html" でPHPスクリプトを動かしている案件のサポートを依頼され、ローカルで簡単な動作確認を行いたいケースがあるとします。
Apacheなら.htaccess等で制御出来ますが、PHP5.4+のビルトインウェブサーバーで動作させたい場合はどうしたらよいでしょうか。
ビルトインウェブサーバーにはルータースクリプト機能がついていますので、ファイルの拡張子で判別して require
してやれば動作します。
<?php
$path = $_SERVER["SCRIPT_FILENAME"];
if(preg_match("/\.html$/", $path)){
chdir(dirname($path));
return require($path);
}
return false;
chdir
でディレクトリを変更しているのは、ルーティング時のカレントディレクトリがドキュメントルートになってしまっている為です。そのまま require
すると、スクリプト内で相対パスのファイル扱いたい時にファイルが見つからずにエラーが発生してしまいますね。