はじめまして。
勉強中の身なので、的外れな質問をしてしまうかもしれませんがどうかよろしくお願いします。
xhtml1.0でCMS Designerを利用しようと思い試してみたのですが、phpファイルにするとxml宣言部でエラーになってしましいます。
正直、xhtmlについても、xmlについても、phpについても、中途半端な知識しかないのでどこからこのエラーに対してアプローチしてよいのかわかりません・・・。
導入事例にある、ペンション NOSIDE(ノーサイド) 様[http://noside-hakuba-aokiko.com/]ではxml宣言を省略しているようなのですが、その方法でよいものなんでしょうか?
xhtmlでの利用
Re: xhtmlでの利用
swimmyさん、はじめまして。webmasterです。
PHPファイル中でのxml宣言はちょっとコツがあるというか、少々面倒な方法が
必要になります。
一般的には
と書けばいいはずなのですが、PHPの環境では<? 〜 ?>で囲われている箇所
をPHPスクリプトと解釈する設定になっている場合があり、ここでパースエラーに
なります。
そこで、上記のxml宣言をPHPスクリプトで出力するように記述します。
↑このような感じです。
全てにこのように書くのがスマートでないと感じる方は、そもそもの原因である
「<? 〜 ?>で囲われている箇所をPHPスクリプトとして解釈する」設定をoffに
してしまう事もできます。
.htaccessファイルが使用できる環境に限りますが、.htaccessファイルに
次の行を追加してください。
実際のところ、XHTMLでのxml宣言は「強く推奨」されているものの、省略しても
問題がある場面はあまり無い為、当方ではずっと省略しておりました。
が、XHTMLもXMLである以上、宣言は入れるべきですね。
これは今後、チュートリアル等も含めて修正していこうと思います。
ご指摘ありがとうございました。m(_ _)m
PHPファイル中でのxml宣言はちょっとコツがあるというか、少々面倒な方法が
必要になります。
一般的には
コード: 全て選択
<?xml version="1.0" encoding="euc-jp"?>
をPHPスクリプトと解釈する設定になっている場合があり、ここでパースエラーに
なります。
そこで、上記のxml宣言をPHPスクリプトで出力するように記述します。
コード: 全て選択
<? echo '<?xml version="1.0" encoding="euc-jp"?>' ?>
全てにこのように書くのがスマートでないと感じる方は、そもそもの原因である
「<? 〜 ?>で囲われている箇所をPHPスクリプトとして解釈する」設定をoffに
してしまう事もできます。
.htaccessファイルが使用できる環境に限りますが、.htaccessファイルに
次の行を追加してください。
コード: 全て選択
php_flag short_open_tag off
問題がある場面はあまり無い為、当方ではずっと省略しておりました。
が、XHTMLもXMLである以上、宣言は入れるべきですね。
これは今後、チュートリアル等も含めて修正していこうと思います。
ご指摘ありがとうございました。m(_ _)m
こちらこそ、今後ともよろしくお願いします。
1点、xml宣言を加える事で問題となるケースがあるのを忘れておりました。
それは、IEの標準準拠モードを使いたい場合です。
IE6.0では、XHTMLの先頭にDOCTYPE宣言があると標準準拠モードに
なりますが、xml宣言があると後方互換モードになってしまいます。
ADPさんなどが詳しく解説されています。
http://adp.daa.jp/archives/000265.html
いちおうご留意くださいませ。
1点、xml宣言を加える事で問題となるケースがあるのを忘れておりました。
それは、IEの標準準拠モードを使いたい場合です。
IE6.0では、XHTMLの先頭にDOCTYPE宣言があると標準準拠モードに
なりますが、xml宣言があると後方互換モードになってしまいます。
ADPさんなどが詳しく解説されています。
http://adp.daa.jp/archives/000265.html
いちおうご留意くださいませ。
Re: phpをhtmlに偽装する指定をあわせるやり方について
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の変更方法は、各レンタルサーバ会社などのマニュアルに記載
されていると思います(場合によっては変更を認めていないこともあるかと
思います)。
以上、よろしくお願い致します。
AddTypeではなくAddHandlerを使っているということは、おそらくPHPが
CGI版として動作しているのだと思います。
CGI版では、.htaccessによるPHPの設定変更を行うことができません。
(モジュール版のみの機能となります9
PHPの設定変更は、php.iniを直接編集することで行う必要があります。
php.iniの中に、short_open_tag = on となっている箇所があると
思いますので、それを off にしてみて下さい。
なければ、short_open_tag = off の記述を追加してみて下さい。
php.iniの変更方法は、各レンタルサーバ会社などのマニュアルに記載
されていると思います(場合によっては変更を認めていないこともあるかと
思います)。
以上、よろしくお願い致します。
Re: phpをhtmlに偽装する指定をあわせるやり方について
webmaster様
返信ありがとうございます!
今回はphp.iniを編集できなそうなので
htmlへの偽装はせずphpで対応しようかと思います。
次回同じケースがあった時に頂いた回答で試してみたいと思います。
ありがとうございました
返信ありがとうございます!
今回はphp.iniを編集できなそうなので
htmlへの偽装はせずphpで対応しようかと思います。
次回同じケースがあった時に頂いた回答で試してみたいと思います。
ありがとうございました

Re: phpをhtmlに偽装する指定をあわせるやり方について
nagashimaさん、php.iniの編集ができなかったとのことで、解決に至らず
申し訳ありませんでした。
phpのhtmlの偽装ですが、mod_rewriteを使って特定のphpページを.htmlに
偽装することが可能です。
この場合、通常のhtmlがphpとして実行されることは無い為、html中のxml宣言
は問題なくなります。
例えば、index.php を index.html として偽装するには次のように書きます。
同様に、aaa.php を aaa.html として偽装する記述をどんどん追加して
行きます。
但し、aaa.html?eid=00001 のようなパラメータ付きでアクセスされる
ことがある場合(詳細ページなど)には、さらに設定をしなければなりません。
詳しくはこちらをご覧下さい。
http://cms.al-design.jp/phpbb/viewtopic.php?t=127
この方法が使えるかどうか分かりませんが、よろしければご検討下さい。m(__)m
申し訳ありませんでした。
phpのhtmlの偽装ですが、mod_rewriteを使って特定のphpページを.htmlに
偽装することが可能です。
この場合、通常のhtmlがphpとして実行されることは無い為、html中のxml宣言
は問題なくなります。
例えば、index.php を index.html として偽装するには次のように書きます。
コード: 全て選択
RewriteEngine on
RewriteRule ^index\.html$ index.php [L]
行きます。
コード: 全て選択
RewriteEngine on
RewriteRule ^index\.html$ index.php [L]
RewriteRule ^aaa\.html$ aaa.php [L]
ことがある場合(詳細ページなど)には、さらに設定をしなければなりません。
詳しくはこちらをご覧下さい。
http://cms.al-design.jp/phpbb/viewtopic.php?t=127
この方法が使えるかどうか分かりませんが、よろしければご検討下さい。m(__)m