我在自己的Mac上安裝XAMPP(最新版本,詳細資訊放在最後),架了一個xoops準備用模組產生器來開發模組。
發現如果使用非系統預設以外的佈景,進入首頁就出現「A problem has occurred on our server!」的錯誤畫面,錯誤訊息為:Error: Cannot use string offset as an array
打開站長工具箱,打開php除錯後,發現以下的錯誤訊息:
錯誤: Error: Cannot use string offset as an array 在檔案中的第 /Users/caleb/web/xmm/xoops_data/caches/smarty_compile/509c19f9-system-infoway-default^%%DF^DF8^DF88FB65%%get_var.tpl.php 列 361
這個問題不只有出現在前臺,
在後台,即便使用系統預設佈景,使用「站長工具箱」或「Tad Tools 工具包」的部分功能,也都會出類似上面的錯誤畫面與訊息,如:
Tad Tools 工具包->初始設定
錯誤: Error: Cannot use string offset as an array 在檔案中的第 /modules/tadtools/admin/main.php 列 33
站長工具箱--> 模組隨選
錯誤: Error: Cannot use string offset as an array 在檔案中的第 /modules/tad_adm/admin/adm_function.php 列 26
站長工具箱--> 清理垃圾帳戶
錯誤: Error: Cannot use string offset as an array 在檔案中的第 /modules/tad_adm/admin/spam.php 列 89
若使用tad上的佈景,進入「佈景管理」->主管理介面,出現
錯誤: Error: Cannot use string offset as an array 在檔案中的第 /modules/tadtools/TadUpFiles.php 列 1359
在「佈景管理」->選單設定則不會有這個問題。
目前我找到的文題癥結如下:
網路上爬文,發現應該是因為使用陣列前沒有先宣告的問題,我猜有可能是因為php 7.1的關係。我其他的xoops放在hosting上面則完全沒有這個問題,hosting的php版本是7.0。
我去查看出現問題的部分的原始碼,發現老師使用陣列之前,會先宣告,但是宣告樣式為字串非陣列,如:$values = "";
若將出問題的部分改為:$values = array();
就可以正常顯示。(目前我已經將佈景管理模組改好,可以正常運作。)
我猜,佈景主題裡面也有用到類似的設定,以至於在smrty產生的快取檔案中也會出現這樣的問題。
目前解決的辦法,除了將程式內有問題的部分修正外(我想這是未來一定要做的),
不知道老師有沒有什麼建議的解決方向?有沒有可能在php.ini的設定檔中去調整就可以了呢?還是我得要把php將回7.0?
環境訊息:
Mac OS 10.12.5
XAMPP for Mac 7.1.4
PHP Version 7.1.4
MySQL版本: 5.5.5-10.1.22-MariaDB
XOOPS 2.5.8
站長工具箱 2.59 release
Tad Tools 工具包 3.08 Final
佈景管理 4.2 release