さくらのインターネット(拡張子HTMLでPHPを実行する)

本記事は、「さくらのインターネットでHTML内でPHPを実行する」ための備忘録です。

ホームページをテンプレート化しようと、HTMLにPHPを書いてサーバーにアップ!

!?

まさかの、「さくらのインターネット」さんエラーです・・・汗
諦めずネットを検索してみることに・・・

さくらのインターネット PHP HTMLLink 」で検索するとありました!!!!
一応以下1~3までがその手順です。
※結果を先に述べると私の環境下では使えませんでしたが別方法でできましたので下までお読みください。

1.CGI-PHPのコピー

TeraTerm等を使って、自アカウントにphp-cgiをコピーします。
FFFTPを使用する場合は、「バイナリー」モードで落として、リネーム後サーバに上げます。
FFFTPで「PHP-CGI」を観るとショートカットに見えますが気にしないでください。

2011年08月21日現在では「5.3.6」が最新です。※安定版の5.2.17もあります。
※MYSQLを使用する人は「php-cgi-mysql5.1」が良いかもしれません。
※hogeはあなたのUSERに変更してください。

cp /usr/local/php/5.2.17/bin/php-cgi /home/hoge/www/php.cgi
cp /usr/local/php/5.3.6/bin/php-cgi /home/hoge/www/php.cgi

2.パーミションの変更

チェンジモード「chmod」を使用してアクセス権限を付与します。いわゆるパーミション変更ってやつです。
※755でも問題なし。

cd /home/hoge/www/
chmod 705 php.cgi

3..htaccessの修正

以下の3行を追加します。
1行目は、表示のファイル優先順位、2、3行目は指定されたファイルにアクセスした場合に「php.cgi」を実行します。
※1行目は無くても問題ありません。

DirectoryIndex index.html index.php
Action myphp-script /php.cgi
AddHandler myphp-script .php .html

4.完了!のはずが。。。?

が、検索でひっかかったサイトの内容を取りまとめた結果ですが、私の環境ではダメした。
さらに色々試していると以下に熱い質問を見つけました。

さくらサーバーで拡張子をhtmlのままPHPを実行させる方法Link

そう、同じエラーでした。

解決していなかったようですが。
※このブログ見てもらえると・・・解決するかもしれません。

Not Found
The requested URL /php.cgi/index.html was not found on this server.

のApacheが返すエラーを観た瞬間に気づきました!!!

そう、「php.cgi」をディレクトリとして扱っているため、index.htmlにアクセスすると何故か「/php.cgi/index.html」にアクセスしようとします。
※ディレクトリ構成は以下のとおりです。

■www
┣php.cgi
┣.htaccess
┗■hoge
┗index.html

おそらくですが、「hoge/index.html」にアクセスした際に適用される上位階層の.htaccessが適用されて、「php.cgi/index.html」となっているのかなと。

ひょっとしたらと思い以下のディレクトリ構成に変更してみました。

■www
 ┣.htaccess
 ┗■hoge
   ┣php.cgi
   ┗index.html

そして、index.htmlにアクセスすると見事に表示されました!
各階層に「php.cgi」を配置すれば問題は解決しそうです。wwwはさくらのサブドメインファイル置き場だからかな。

ふと考えると、hoge直下に「.htaccess」と「php.cgi」を置けば解決ぽいです。「www」直下はさくらのインターネットのサブドメインの話なんですかね。

と言うわけで、完全解決には至っていませんが、同じ原因で苦しんでいる「さくらのインターネット」ユーザのため中途半端ですが公開します。
ちなみに、ブログ(PHP)を変更した第一弾でした。

あと追記ですが、上記php.cgiを配置してページが表示されなくなった人は、1行目に以下を書いていないか確認してください。

<?xml version="1.0" encoding="utf-8"?>

<?でphpファイルと認識するためベタ書きされたHTMLは無効化(エラー)となります。

<?php
    echo '<?xml version="1.0" encoding="utf-8"?>' . "¥n";
?>

     

— posted by Kazu(管理者) at 01:35 am   commentComment [1] 

この記事に対するコメント・トラックバック [1件]

Up1. tn — 2012/11/30@16:45:51

本当にありがとうございました。

サクラインターネットにて、phpでメニューを取得するときに
500エラーばかりでていました。
このことを一週間ほど悩んでいました。

このページの最下部の<?xml version
の説明のおかげで、無事解決致しました。

ありがとうございました。

500エラーで悩んでいる方、確認してみてはいかがでしょうか。