xhtmlでの利用

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
swimmy
記事: 2
登録日時: 2005年4月05日(火) 20:13

xhtmlでの利用

投稿記事 by swimmy » 2005年4月05日(火) 20:33

はじめまして。
勉強中の身なので、的外れな質問をしてしまうかもしれませんがどうかよろしくお願いします。

xhtml1.0でCMS Designerを利用しようと思い試してみたのですが、phpファイルにするとxml宣言部でエラーになってしましいます。

正直、xhtmlについても、xmlについても、phpについても、中途半端な知識しかないのでどこからこのエラーに対してアプローチしてよいのかわかりません・・・。
導入事例にある、ペンション NOSIDE(ノーサイド) 様[http://noside-hakuba-aokiko.com/]ではxml宣言を省略しているようなのですが、その方法でよいものなんでしょうか?

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: xhtmlでの利用

投稿記事 by webmaster » 2005年4月05日(火) 23:37

 swimmyさん、はじめまして。webmasterです。

 PHPファイル中でのxml宣言はちょっとコツがあるというか、少々面倒な方法が
必要になります。
 一般的には

コード: 全て選択

<?xml version="1.0" encoding="euc-jp"?>
 と書けばいいはずなのですが、PHPの環境では<? 〜 ?>で囲われている箇所
をPHPスクリプトと解釈する設定になっている場合があり、ここでパースエラーに
なります。
 そこで、上記のxml宣言をPHPスクリプトで出力するように記述します。

コード: 全て選択

<? echo '<?xml version="1.0" encoding="euc-jp"?>' ?>
 ↑このような感じです。

 全てにこのように書くのがスマートでないと感じる方は、そもそもの原因である
「<? 〜 ?>で囲われている箇所をPHPスクリプトとして解釈する」設定をoffに
してしまう事もできます。

 .htaccessファイルが使用できる環境に限りますが、.htaccessファイルに
次の行を追加してください。

コード: 全て選択

php_flag short_open_tag off
 実際のところ、XHTMLでのxml宣言は「強く推奨」されているものの、省略しても
問題がある場面はあまり無い為、当方ではずっと省略しておりました。
 が、XHTMLもXMLである以上、宣言は入れるべきですね。

 これは今後、チュートリアル等も含めて修正していこうと思います。

 ご指摘ありがとうございました。m(_ _)m

swimmy
記事: 2
登録日時: 2005年4月05日(火) 20:13

投稿記事 by swimmy » 2005年4月06日(水) 00:01

どうも大変早い返事ありがとうございました。

うまく表示されました!

まだまだわからないコトだらけなのでお世話になるかもしれませんが、よろしくお願いします。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

投稿記事 by webmaster » 2005年4月06日(水) 10:46

 こちらこそ、今後ともよろしくお願いします。

 1点、xml宣言を加える事で問題となるケースがあるのを忘れておりました。

 それは、IEの標準準拠モードを使いたい場合です。
 IE6.0では、XHTMLの先頭にDOCTYPE宣言があると標準準拠モードに
なりますが、xml宣言があると後方互換モードになってしまいます。

 ADPさんなどが詳しく解説されています。
 http://adp.daa.jp/archives/000265.html

 いちおうご留意くださいませ。

nagashima
パワーユーザー
記事: 44
登録日時: 2007年5月26日(土) 15:52
お住まい: 東京

phpをhtmlに偽装する指定をあわせるやり方について

投稿記事 by nagashima » 2008年4月10日(木) 11:16

お世話になります。

xml宣言のエラーとhtmlをphpに偽装する設定についてです。

xml宣言によるエラーがこのトピック同様にでたため

コード: 全て選択

php_flag short_open_tag off
を.htaccessに追加いたしました。
ですが.htaccessにhtmlをphpに偽装する設定

コード: 全て選択

AddHandler x-httpd-php442 .php .html
も記述してあると「Internal Server Error」になってしまいます。

xml宣言でエラーがでずかつhtmlをphpに偽装するやり方ってあるのでしょうか?
よろしくお願いいたします。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: phpをhtmlに偽装する指定をあわせるやり方について

投稿記事 by webmaster » 2008年4月11日(金) 12:13

 nagashimaさん、いつもお世話になっております。

 AddTypeではなくAddHandlerを使っているということは、おそらくPHPが
CGI版として動作しているのだと思います。
 CGI版では、.htaccessによるPHPの設定変更を行うことができません。
 (モジュール版のみの機能となります9

 PHPの設定変更は、php.iniを直接編集することで行う必要があります。

 php.iniの中に、short_open_tag = on となっている箇所があると
思いますので、それを off にしてみて下さい。
 なければ、short_open_tag = off の記述を追加してみて下さい。

 php.iniの変更方法は、各レンタルサーバ会社などのマニュアルに記載
されていると思います(場合によっては変更を認めていないこともあるかと
思います)。

 以上、よろしくお願い致します。

nagashima
パワーユーザー
記事: 44
登録日時: 2007年5月26日(土) 15:52
お住まい: 東京

Re: phpをhtmlに偽装する指定をあわせるやり方について

投稿記事 by nagashima » 2008年4月11日(金) 16:31

webmaster様

返信ありがとうございます!

今回はphp.iniを編集できなそうなので
htmlへの偽装はせずphpで対応しようかと思います。

次回同じケースがあった時に頂いた回答で試してみたいと思います。

ありがとうございました :o

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: phpをhtmlに偽装する指定をあわせるやり方について

投稿記事 by webmaster » 2008年4月11日(金) 17:37

 nagashimaさん、php.iniの編集ができなかったとのことで、解決に至らず
申し訳ありませんでした。

 phpのhtmlの偽装ですが、mod_rewriteを使って特定のphpページを.htmlに
偽装することが可能です。
 この場合、通常のhtmlがphpとして実行されることは無い為、html中のxml宣言
は問題なくなります。

 例えば、index.php を index.html として偽装するには次のように書きます。

コード: 全て選択

RewriteEngine on
RewriteRule ^index\.html$ index.php [L]
 同様に、aaa.php を aaa.html として偽装する記述をどんどん追加して
行きます。

コード: 全て選択

RewriteEngine on
RewriteRule ^index\.html$ index.php [L]
RewriteRule ^aaa\.html$ aaa.php [L]
 但し、aaa.html?eid=00001 のようなパラメータ付きでアクセスされる
ことがある場合(詳細ページなど)には、さらに設定をしなければなりません。
 詳しくはこちらをご覧下さい。
 http://cms.al-design.jp/phpbb/viewtopic.php?t=127

 この方法が使えるかどうか分かりませんが、よろしければご検討下さい。m(__)m

返信