21
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

phpのビルトインウェブサーバーで拡張子.htmlをphpとして動作させる

Posted at

例えば本番環境で "*.html" でPHPスクリプトを動かしている案件のサポートを依頼され、ローカルで簡単な動作確認を行いたいケースがあるとします。

Apacheなら.htaccess等で制御出来ますが、PHP5.4+のビルトインウェブサーバーで動作させたい場合はどうしたらよいでしょうか。

ビルトインウェブサーバーにはルータースクリプト機能がついていますので、ファイルの拡張子で判別して require してやれば動作します。

PHP: ビルトインウェブサーバー - Manual

<?php

$path = $_SERVER["SCRIPT_FILENAME"];

if(preg_match("/\.html$/", $path)){
    chdir(dirname($path));
    return require($path);
}

return false;

chdir でディレクトリを変更しているのは、ルーティング時のカレントディレクトリがドキュメントルートになってしまっている為です。そのまま require すると、スクリプト内で相対パスのファイル扱いたい時にファイルが見つからずにエラーが発生してしまいますね。

21
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?