1. XAMPP のバージョンを上げたら PHP でエラーが発生
apache friends
via kwout
XAMPP 1.7.0 上で問題なく動作していた PHP のコードが、XAMPP 1.7.2 にしたら、以下のエラーを吐いた。
Parse error: syntax error, unexpected $end in C:\...
syntax error, unexpected $end の意味を教えてください - 教えて!goo によると、
<?php
で始まったPHPスクリプトの部分が
?>
で終わっていない、ということはありませんか?
コード上に、上記で指摘されている箇所はなかった。ただし、エラーが発生するコードでは、一般的な PHP のタグと
「ショートタグ」
による記述が混在していた。
2. ショートタグとは
ショートタグとは、 <? ではじまり ?> により、PHP のコードを示す書き方のこと。
3. <? echo 'これは、SGML を処理する最もシンプルな方法です'; ?>
(PHP: HTML からの脱出 – Manual より)
ショートタグが動作するためには、
短縮型のタグ(例 3.)が有効なのは、php.ini 設定ファイルのディレクティブ short_open_tag が 有効になっている場合か PHP が --enable-short-tags オプションつきで configure されている場合のみです。
(同上より)
3. XAMPP のバージョンによる、ショートタグを動作させる設定の違い
XAMPP 1.7.0 において、phpinfo() を表示させたら、
short_open_tag On
XAMPP 1.7.2 では、
short_open_tag Off
となっていた。
これにより、ショートタグ形式で書かれていたコードが、PHP のコードとして認識されずエラーとなった。
4. ショートタグの危険性
【PHPカンファレンス2006】PHPで書かれた実際のアプリケーションに潜む危険なコード - ニュース:ITpro によると、
… PHPのコードを埋め込むために「<?」(ショートタグという)を利用していたのも問題だという。ショートタグはデフォルトでは有効だが,オンオフを切り替えられる。オフに設定していたサーバーでは,ソースコードが見えてしまうことになる。…
元々ショートタグを使っているつもりは全くなかった。しかし、誤って書いていたものが、XAMPP 1.7.0 では問題なく動作してしまった。ショートタグが有効なため問題が表面化しなかった。 (+_+)
0コメント:
コメントを投稿