携帯サイト制作でPHPを使う場合のXML宣言のエラー対処
category : Webプログラミング ;
携帯用サイト製作時にPHPを使うと、「Parse error: syntax error, unexpected T_STRING in ...」というエラーが出るか、画面に何も表示されない場合は、
などのxml宣言の「 <? 」が、PHPの「 <?php 」の省略タグと解釈されて、そうなる場合がある。
PHPタグを使っていないXHTMLファイルの拡張子を「 .php 」に変えただけでも、同じ症状が出る場合は、ほぼ確実にこれ。
対処方法は次の通り。
A) サーバの「 php.ini 」の「 short_open_tag 」を「 Off 」にする。
※専用サーバではなくレンタルなどの共有サーバでは出来ない場合あり。
B) サーバでPHPファイルを使っているディレクトリに「php_flag short_open_tag Off」を記述した「 .htaccess 」を設置する。
※レンタルサーバなどでは、「 .htaccess 」が設置できないサーバもあり。
C) PHPファイルのxml宣言部分をPHPの「 echo 」や「 print 」で出力する。
D) PHPを利用しない。
E) xml宣言を外してPHPを利用する。
※A)かB)を行った場合は、「 <? 」がPHPの省略タグとして利用できなくなるので注意が必要。
詳しくは次の通り。
A)は、サーバ管理者にお願いしてください。
B)は、「 .htaccess 」が設置できるサーバであれば、次の内容を記述してPHPを使っているディレクトリにFTPでUPすればOK。
php_value mbstring.internal_encoding SJIS
php_flag short_open_tag Off
</IfModule>
※1) 「IfModule」はなくても動くっぽい。PHPがバージョン5の場合は「mod_php5.c」とする。
※2) 「php_value mbstring.internal_encoding SJIS」はなくてもOK。携帯用の文字コードが現在ほぼ「 Sift_JIS 」のため、一応入れておくと無難なため入れてある。もちろん、PHPファイルで別の文字コードを指定していれば、ここでもそれを指定する必要がある。
C) PHPファイルのxml 宣言部分をPHPの「 echo 」や「 print 」で出力する。
xml宣言部分を次のように記述する。
↓
D) PHPを利用しないで、XHTMLのみで制作する。
E) xml宣言を外してPHPを利用する。
いくつか見た感じでは最近の機種であれば、表示上や動作でおかしいところはなかったけど、出来るだけやらない方がいい。
■参考サイト
Q43. スキンを xhtml ファイルで自作したら、エラーが表示される or 何も表示されないのですが?
http://popilol.lolipop.jp/NiconicoPHP/faq/body.php?no=42
xhtml と php
http://www.tagindex.com/kakolog/q2bbs/601/810.html
xmlの宣言について
http://lolipoking.lolipop.jp/php/patio.cgi?mode=view&no=2690
「.htaccess」ファイルでの設定
http://www.shigeweb.jp/php/project_p/?section=setup&page=htaccess
