拡張子がphpのファイル(というか、phpコードが実行される環境)で、
かつphp.iniのshort_open_tagがOnになっていると、XHTMLのxml宣言でエラーが出る。
なぜかというと、インタプリタが<?xml から始まる文字列をphpコードとして解釈するからである。
通常、次のようなerror_logが出力される。
Parse error: parse error, unexpected T_STRING in *.php on line 1
php.ini のshort_open_tag をOffにするのが正しい解決方法だが、
php.ini を勝手に変更してはならないケースでは、次のような回避方法もある。
<?php echo '<?xml version="1.0" encoding="utf-8"?>'."\n" ?>
PHPの仕様に文句をこぼさずに生きていきたいものですね。

Leave a comment