2014年2月14日 星期五

PHP 4.x -> 5.x 實戰分享(1) PHP的tag不相容性[出錯率:極低]

本文問題發生率: 極低(通常並非蓄意)
PHP 5跟PHP 4在解析的tag的容錯能力不一樣,在PHP 4的時候以下的寫法是可以正常執行不會出錯。
<?php if(ture){ ?>
hi
<?php;}?>
為什麼呢?因為第二組php標籤其實被當成<? php;}?>來解釋。
php應該是被當成常數但是php找不到php這個常數就直接忽略掉了

所以前人在不看警告的狀態下,就留下這樣的錯誤讓我在PHP 5上解析了很久的
PHP Parse error:  syntax error, unexpected end of file in /var/www/html/titan/product02.php on line 492
可是明明這一行就在298行....Orz

這個錯誤應該只是某位先人手誤忘了打空格,但是這邊特別跟大家提醒一下
在php的tag的<php後方跟?>的前方一定要記得留空格,才是正確的,雖然php對於?>前面要不要留空格有很強的容錯的能力,但是請不要跟自己開這種玩笑,這個bug至少糾纏了我一個多小時。

沒有留言: