一個討論區的程式某段程式碼如下:
$test = @include("$thispath/languages/big5/generic.php");
if (!$test)
{
echo "FATAL ERROR: Unable to find the language directories...."
}
我後來把 big5 所有語言檔,以iconv 轉換後,放置於 languages/utf8 這個子目錄,並且修改該段程式碼
$test = @include("$thispath/languages/utf8/generic.php");
嘿!很奇怪,系統就是會跳到檔案不存在 (!$test) 這個 block , 我檢查了目錄以及檔案的權限,甚至開到 777 仍然無用。
我覺得很納悶,於是把 generic.php 備份,自己 touch 一個空的 generic.php , 居然 pass 過了...
這是什麼情形? 難道該 generic.php 內的某些字元會造成 @include 誤判,而造成 include 錯誤?可能是什麼問題呢?
PS : 該檔案內容如下(部分):
...
$ubbt_lang['PREV_ICON'] = "上一篇";
$ubbt_lang['INDEX_ICON'] = "索引";
$ubbt_lang['NEXT_ICON'] = "下一篇";
$ubbt_lang['EXP_ICON'] = "展開";
$ubbt_lang['COL_ICON'] = "折疊";
$ubbt_lang['FLAT_ICON'] = "平坦模式";
$ubbt_lang['THREAD_ICON'] = "樹狀模式";
$ubbt_lang['EDIT_ICON'] = "編輯";
$ubbt_lang['REPLY_ICON'] = "回覆";
$ubbt_lang['QUOTE_ICON'] = "引言(請適度)";
$ubbt_lang['FORUM_RETURN'] = "回到討論區";
$ubbt_lang['NO_ICON'] = "不使用圖示";
$ubbt_lang['NOT_LOGGED'] = "您尚未登入系統.";
$ubbt_lang['MAINTAIN'] = "管理";
$ubbt_lang['MONTH1'] = "一月";
$ubbt_lang['MONTH2'] = "二月";
$ubbt_lang['MONTH3'] = "三月";
$ubbt_lang['MONTH4'] = "四月";
$ubbt_lang['MONTH5'] = "五月";
$ubbt_lang['MONTH6'] = "六月";
$ubbt_lang['MONTH7'] = "七月";
$ubbt_lang['MONTH8'] = "八月";
$ubbt_lang['MONTH9'] = "九月";
$ubbt_lang['MONTH10'] = "十月";
$ubbt_lang['MONTH11'] = "十一月";
$ubbt_lang['MONTH12'] = "十二月";
$ubbt_lang['CALENDAR'] = "行事曆";
$ubbt_lang['MYCOOKIES'] = "My Cookies";
$ubbt_lang['DELETED'] = "被刪除的使用者";
...