short_open_tag

2009/12/16 | PHPの基本

PHPでプログラムを記述する際は、プログラムの前後を「<?php」「?>」でくくらなければならないのは当たり前中の当たり前。その省略形「<?」「?>」でもOK。後者の記述はPHPの設定でshort_open_tagが有効になっているかどうかによって決定されるが、たいていの場合は有効になっている。

この場合<?=$hoge ?>なんていう省略した記述が出来るので便利といえば便利なのだが、時として厄介や問題を生じさせることがある。

例えば、一昔前はHTMLの記述は<html>で始まるのが当たり前だった。しかし今ではDOCTYPEの宣言やらXML宣言を冒頭に記述することがほぼ常識的となっている。ここでXML宣言が問題となる。XML宣言の記述例は以下のとおりだ。

<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>

問題はこの宣言もPHPタグの省略形と同様に「<?」「?>」でくくっているからだ。だからこの宣言を記述したHTML文書の拡張子を単に.phpとし、PHPプログラムを記述しようとすると当然のごとくエラーになる。これには注意が必要だ。さらに最近のレンタルサーバの設定ではdisplay_errorsの設定が無効になっているのでエラーも吐いてくれない。だから拡張子を.phpにしたとたん「何も表示されなくなった」という事象も発生する。

この問題を回避するためには、やはりデフォルトの設定としてshort_open_tagを無効にして、PHPは必ず「<?php」「?>」でくくることをオススメする。具体的には.htaccessを作成して(これも最近のレンタルサーバでは当たり前のように使えるようになっている)、そこに次の一行を加えておけばよい。

php_flag short_open_tag off

PHPの次のバージョンあたりで消え去ってほしい記述方法だ。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net