PHP の short_open_tag 爆発しろ。

PHPの short_open_tag の仕様がバージョンによってコロコロ変わるのでメモ。

まとめ

バージョン デフォルト 変更可能 備考
PHP 4.0.0 On PHP_INI_ALL "<?=" "<?" の両方に影響
PHP < 5.3 Off PHP_INI_PERDIR "<?=" "<?" の両方に影響
PHP 5.4 On PHP_INI_PERDIR "<?=" は常に使用可能 (設定を変更できない)

※ 一部、未検証です。
※ 一部サイトで、「5.4では short_open_tag ディレクティブが無くなる」というような書き方をしていますが、"<? " を使うかどうかの指定はできました。

備考、定数の説明

定数 説明
PHP_INI_USER 1 このエントリは、ユーザスクリプトから設定可能
PHP_INI_PERDIR 2 このエントリは、.htaccessおよび httpd.confのVHostディレクティブ内で設定可能
PHP_INI_SYSTEM 4 このエントリは、php.ini または httpd.conf (しかし、httpd.confのVHostブ ロック内では不可)で設定可能
PHP_INI_ALL 7 このエントリはどこでも設定可能

対策

  1. 誰が何と言おうと、設定がどうなっていようと、short_open_tag は使わない。
  2. XML 出力するときは Smarty を使う。