search
LoginSignup
3
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

お名前.comにて、拡張子htmlのままphpを動かす

既存サイトのheaderとfooterをincludeさせようと思い、
拡張子htmlのままphpを動かす為、「お名前.com」サーバーにてhtaccessに
以下コードを追加した。

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

しかし、できなかった。

当然のようにレンタルサーバーによって書き方が違う為、
上記記述では動かない場合があるのだ。
しかし久しぶりに案件でレンタルサーバーを触り、
失念してしまっていたので、忘れないように残しておく。

対処法

まずは「お名前.com」のQ&Aには以下のような回答がある。
https://help.onamae.com/app/answers/detail/a_id/9096/

つまりCGIとしてPHPを動かす必要があるとのこと。
一生懸命ググって、以下の方法を見つけることが出来た。

①まず、「.htaccess」には以下のように書く。

Action myphp-cgi /php.cgi
#AddHandler myphp-cgi .html
<Files ~ "^index\.html?$">
  AddHandler myphp-cgi .html .htm
</Files>

「.htaccess」がアップロードされていない場合はアップロード。
されている場合は記述を追加。パーミッションを「755」にする。

②次に、「php.cgi」というファイルを用意し、以下のように書く。

#! /usr/bin/bash
exec /usr/local/bin/php-cgi

「php.cgi」がアップロードされていない場合はアップロード。
パーミッションを「700」にする。

以上で動くはず

私はこれでうまくいったが、
もしこれで動かなければ、改行コード、文字コードを
変えるといい、という情報があるので、その場合は以下のようにする。

  • 「.htaccess」と「php.cgi」はSHIFT-JSのLF
  • 「index.html」はUTF-8のLF

ディレクトリを変える場合

ホームディレクトリではなく、色んなサイトをディレクトリ切って管理していて、
とあるディレクトリのみ対応させたい要件が出た。

つまり、

home
├ .htaccess
└ php.cgi

ではなく、

home
└ site
   ├ .htaccess
   └ php.cgi

とする必要がある。

この場合、先程の「.htaccess」の記述を以下のように変える必要がある。

Action myphp-cgi /site/php.cgi ←ディレクトリを変える
#AddHandler myphp-cgi .html
<Files ~ "^index\.html?$">
  AddHandler myphp-cgi .html .htm
</Files>

以上で、「site」ディレクトリ以下で拡張子「html」のままで
PHPが動き、headerとfooterがincludeできた。

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
What you can do with signing up
3
Help us understand the problem. What are the problem?