HTMLでPHPを実行する方法 -apache,nginx-

公開:2016-07-14 / 制作・開発 / , , , , ,
更新:2017-02-12

今から9年前、10人前後の小さなWeb制作会社にいたころ、開発環境を構築するのに大変だった案件があります。

 

それは、

 

「.php」という拡張子がついたURLだと、ユーザが怪しむ可能性があるのでファイルの拡張子はすべて「.html」で表示させたい

 

という内容のものです。

 

当時のWebのプログラム言語は、PHPよりperlで作られることが多かったので、拡張子は「.cgi」のほうが多かったです。

それ以前に、「.html」で作られるのが当たり前というお客さんがほとんどだったので、「.php」「.cgi」というURLを気にする方がいたのは確かです。

 

この頃は転職したてで、Webの知識だけではなくインフラの知識もあまりなかったので、この問題を自力で解決出来た時はちょっと感動しました(笑)

 

ブログのネタ出しに過去の案件を思い出していたら、ふと思い出したので、本日はこの内容について書いてみたいと思います。

 

.html拡張子でphpを実行する方法

僕はApacheのWebサーバを利用が多いのですが、最近では、nginxというWebサーバも有名なので、そちらと合わせて紹介したいと思います。

 

なお、少々インフラの知識が必要になりますのでご了承ください。

 

Apacheの場合

Apacheの場合、方法は以下の2つです。

  • .htaccessを利用する
  • httpd.confに記述する

 

.htaccessを利用する

説明するより真似して記述したほうが早いと思うので、細かい説明は省きます。

 

まず基本的な記述として、

AddType application/x-httpd-php .html

か、もしくは

AddHandler application/x-httpd-php .php .html

と記述すればOKです。

 

また、利用しているサーバ次第ではうまく動かない場合があるので、その場合は、

php_flag allow_url_fopen on
php_flag allow_url_include on

も追加すれば動くはずです。

 

また、特定のファイルのみ、htmlという拡張子でphpを実行したい場合は、

<Files "XXXXXX.html">
AddType application/x-httpd-php .html
</Files>

の「XXXXXX.html」の部分を対象のファイルに書き換えてください。

 

httpd.confに記述する

格安のレンタルサーバの場合、編集権限を与えられていないことが多いので、この方法は不可能です。

その場合は.htaccessでトライしてください。

 

httpd.confに、<IfModule mime_module> ~ </IfModule>というタグで括られた箇所があるので、その中に

AddType application/x-httpd-php .php .html

を記述すればOKです。

 

なお、httpd.confを編集した場合は、httpdをrestartしないと反映されないので注意しましょう。

 

nginxの場合

以下のふたつの設定で実現できます。

 

「nginx/conf.d/hoge.virtual.conf」に下記を記述します。

# vim /etc/nginx/conf.d/XXXXXX.virtual.conf
location ~ \.html$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.html;
    fastcgi_param  SCRIPT_FILENAME  /home/XXXXXX/htdocs$fastcgi_script_name;
    include        fastcgi_params;    
}

なお、記述するファイル先は「default.conf」でもOKです。

 

次に「/etc/php-fpm.d/www.conf」に下記を記述します。

# vim /etc/php-fpm.d/www.conf 
security.limit_extensions = .php .php3 .php4 .php5 .html

コメントアウトされている場合は、コメントを外せばOKです。

 

上記ファイルの編集後は、nginxとphp-fpmを忘れずに再起動してください。

 

最後に

今となってはphpの拡張子の認知度は高いので、前述したような理由でphpを実行したいニーズはあまりないかと思います。

 

これに似た内容で、昔、.aspという拡張して同じような対応をしたことがあるので、共感できそうな経験をお持ちの方は、読んでいただければと思います。

 

余談:.aspをhtml拡張子で実行する

時は同じく今から9年前、当時はactionscript2.0が全盛期で、僕自身フラッシャーとしてFlashコンテンツをバリバリ制作していました。

 

そんな折、別の制作会社から「とあるクライアントのWebサイトの保守をお願いできないか」という打診がウチにありりました。詳しく聞いてみると、「aspっていうプログラムで動く簡単なCMSサイトである」ということがわかりました。

 

(後で聞いた話ですが、当時の社長は「アイツなら多分できるだろう」といった感じで、あまり考えずに引き受けたそうです。今思えば、そういう無茶振りのおかげで短期間で成長できたのかななんて思いました。まぁ倒産しちゃったんですけど、、、)

 

後日、郵送で送られてきたCD-Rからファイル一式を取得し「まずは環境でも再現させようかな」と、自社の開発用サーバにFTPするときに異変に気づきました。

 

ん?

icatch_doubt

aspって言ってたけど、これ全部拡張子がHTMLだぞ?

 

ソースを確認したところ、VBscriptの記述があるので間違いなくaspです。

 

どういうことなのかよくわからなかったので、早速、引き継ぎ前の製作会社に電話をしたところ、

 

あ〜、実はhtmlでaspが動くようにサーバ側でマッピングしていました。

ちなみに、サーバはIISです。

 

その場で「あ、そうですか。わかりました。ありがとうございました。」と言って電話を切りました。

 

えええ~!!!

icatch_no

てゆうかそんなことできるんですか!?

 

というのが僕の心の声がついつい口から出てしまいました。

 

とほほ、、、まぁ仕方ない。こうなったらやるしかない。

 

まず、そもそも会社にIISのWebサーバがなかったので、いらないPCにWindows server をインストールして、探り探り設定して、なんどか環境を作り上げました。

 

その後、IISの本を買ってきて四苦八苦しながら、マッピングの設定を行い、なんとか公開されているサイトと同じ挙動をするようにしました。

 

この間、丸2日かかりました。。。

 

動くようになった後、別の件で話をするついでに、なんでマッピングの設定を行っているのか尋ねたところ、

 

「URLの最後が.htmlじゃないのですが、サイトは本当に安全なのでしょうか?」という問い合わせが何件かあったため、クライアントから信用問題に関わるのでなんとかできないか

 

という相談を受けたことがキッカケとのことでした。

 

 

う〜む、なるほど。

大体同じような理由なのですね。。。

 

この記事書きながらもっといいアイデアがありましたので、また時間のあるときに紹介したいと思います。

 

Author:yukio iizuka
プロフィール画像
フリーランスとしてUX視点で業務支援しています。 HCD-Net認定 人間中心設計専門家 LEGO®︎ SERIOUS PLAY®︎ メソッドと教材活用トレーニング修了認定ファシリテーター Hi-Standard好きです。
http://yukioiizuka.com
mislead
MISLEADの記事に共感いただけましたら
いいねをお願いします。

コメント一覧

コメントはありません

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください



       

© yukio iizuka All Rights Reserved...