最近我安裝的Keyword Link Plugin這個外掛出現了下面的錯誤:
Fatal error: Uncaught Error: Undefined constant “BM_KEYWORDLINK_OPTION” in /home/job/wordpress/wp-content/plugins/blog-mechanics-keyword-link-plugin-v01/bm_keywordlink.php:21 Stack trace: #0 /home/job/wordpress/wp-admin/includes/plugin.php(2286): include_once() #1 /home/job/wordpress/wp-admin/plugins.php(191): plugin_sandbox_scrape() #2 {main} thrown in /home/job/wordpress/wp-content/plugins/blog-mechanics-keyword-link-plugin-v01/bm_keywordlink.php on line 21
我想是因為我把PHP升級到PHP 8以上的的關係,很多的語法都改了,恰巧我這陣子工作玩C#很多時間,所以就有點搞不清狀況了,Google一些人的類似經驗,發現PHP的define定義定數的語法改了。
所以只要將
bm_keywordlink.php的21行及22行這兩行程式修改一下加個雙引號就可以繼續使用了,不錯吧!
define(BM_KEYWORDLINK_OPTION,’bm_keywordlinkoption’);
define(BM_KEYWORDLINK_QUOTES,’1′);
改成
define(“BM_KEYWORDLINK_OPTION”,’bm_keywordlinkoption’);
define(“BM_KEYWORDLINK_QUOTES”,’1′);
測試後改成502的錯誤,我再檢查看看
502 Bad Gateway
檢查error.log有PHP Warning: Undefined array key “action” in …/blog-mechanics-keyword-link-plugin/bm_csvsupport.php on line 138的錯誤
這一行原來長這樣,以前可能php.ini設定沒那麼嚴格,現在PHP8的嚴格多了
if ($_POST[‘action’]==’exportcvs’)
所以我們增加isset來檢查$_POST[‘action’]是否有值,有值就做if判斷裡面的事,沒有就直接跳過。
if (isset($_POST[‘action’]) && $_POST[‘action’]==’exportcvs’)
更換後502錯誤就沒了,我們繼續追蹤看看~