一、前言
這篇文章將會分享我解決「 E_COMPILE_ERROR 」的過程,希望給跟我遇到類似問題的人一個參考。
二、廢話有點多的過程分享
※溫馨提醒 : 不想看那麼多廢話的人可以跳到第三章看重點整理。
其實在之前我就已經遇過一次「這個網頁發生重大問題」的狀況,並且打了一篇文分享自己如何解決「E_PARSE syntax error unexpected ‘;’」造成的問題。
傳送門>>【教學】當wordpress發生「E_PARSE syntax error 」導致「這個網頁發生重大問題」時該怎麼解決?
然後今早我登入wordpress時又再次看到了「這個網頁發生重大問題」的頁面。
不過因為有了之前的經驗,所以我這次並沒有像上次那麼緊張,不慌不忙地點開信箱查看wordpress寄給我的錯誤訊息,詳細內容如下 :
檔案 /home2/yusyuuco/public_html/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-waf/rules/rules.php 的第 2 行發生錯誤 (錯誤類型: E_COMPILE_ERROR)。錯誤訊息: require(): Failed opening required '/home2/yusyuuco/public_html/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-waf/src/../rules/allow-ip.php' (include_path='/home2/yusyuuco/public_html/wp-content/plugins/backwpup/vendor/pear/archive_tar:/home2/yusyuuco/public_html/wp-content/plugins/backwpup/vendor/pear/console_getopt:/home2/yusyuuco/public_html/wp-content/plugins/backwpup/vendor/pear/pear-core-minimal/src:/home2/yusyuuco/public_html/wp-content/plugins/backwpup/vendor/pear/pear_exception:.:/opt/cpanel/ea-php74/root/usr/share/pear')
首先看到「第 2 行發生錯誤」後,我以為這次也是程式碼出問題,於是就先透過信件提供給我的網址以復原模式登入後台修正問題。
登入後發現是「Jetpack」這款外掛出了問題,並接著到設定外掛的頁面找「更新鍵」,看能不能先透過更新的方式解決問題。
結果外掛已經更新至最新版本,無法再點擊更新鍵。
然後我想說先試試看停用再啟用,可是沒想到再次啟用後wordpress就掛掉並跳出「這個網頁發生重大問題」的頁面……
導致我必須等wordpress再寄一封信給我,我才能再次以復原模式登入後台……
沒關係 ! 反正我還可以去bluehost後台的檔案管理員找發生問題的程式碼。
進去後照著信件給我的錯誤訊息「/home2/yusyuuco/public_html/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-waf/rules/rules.php 」一個個點。
最後進入「rules.php」尋找傳說中出問題的第二行。
…
……
…………..
可是程式碼根本沒出問題啊!!!
直到這邊我才終於意識到我之前的經驗無法套用在「E_COMPILE_ERROR」上,並開始焦急得搜尋各種解決方法。
我先是查「E_COMPILE_ERROR」本身到底是什麼錯誤。
「E_COMPILE_ERROR」是指「致命編譯時錯誤。類似E_ERROR,但是是由Zend腳本引擎產生的。」
恩,很好,看完後我還是有看沒有懂。
於是我又去瀏覽其他文章,看有沒有人跟我一樣。
結果發現好像是「Jetpack」與另一款外掛「backwpup」發生衝突。
檔案 /home2/yusyuuco/public_html/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-waf/rules/rules.php 的第 2 行發生錯誤 (錯誤類型: E_COMPILE_ERROR)。錯誤訊息: require(): Failed opening required '/home2/yusyuuco/public_html/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-waf/src/../rules/allow-ip.php' (include_path='/home2/yusyuuco/public_html/wp-content/plugins/backwpup/vendor/pear/archive_tar:/home2/yusyuuco/public_html/wp-content/plugins/backwpup/vendor/pear/console_getopt:/home2/yusyuuco/public_html/wp-content/plugins/backwpup/vendor/pear/pear-core-minimal/src:/home2/yusyuuco/public_html/wp-content/plugins/backwpup/vendor/pear/pear_exception:.:/opt/cpanel/ea-php74/root/usr/share/pear')
突然發現一線生機後我趕緊再次登入後台,把「backwpup」停用,並回頭嘗試啟用「Jetpack」,但還是一樣跳出「這個網頁發生重大問題」的頁面。
然後我一邊想著該不會單純停用沒效一邊把「backwpup」給刪了,然而再次啟用「Jetpack」仍是一樣的結果,而且每次後台掛掉我都要等wordpress寄新的復原模式網址給我,我才能登入後台。
前後總共收到了5封信,其中幾封不知為何隔好久才寄給我。
不過講到這也終於要講到我的解決辦法了,就是把「Jetpack」刪掉並重新安裝。
其實在一開始我就有看到這個方法,只是我很擔心一旦刪掉Jetpack之前統計的數據就會不見,所以前面一直在找還有沒有其他辦法。
總之,我在刪除之前查了一下Jetpack的相關說明,其中有提到,即使刪除後再安裝資料也還會在,只是設定的部分要重新設定。
說明連結 >> 重新連結及重新安裝 Jetpack
看到這行後我才終於放心卸除Jetpack並重新安裝。
最後也如網站說明一樣,我並沒有遺失任何資料,包括我最在意的每月造訪人次。
儘管我的部落格的造訪人次不像一些創作者高達上千萬,但那一點一滴都是我的成長軌跡,對我而言別具意義。
三、 E_COMPILE_ERROR 的解決方法
先把「發生衝突的外掛」停用或刪除,然後將「發生問題的外掛」啟用或重新安裝。
檔案 /home2/yusyuuco/public_html/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-waf/rules/rules.php 的第 2 行發生錯誤 (錯誤類型: E_COMPILE_ERROR)。錯誤訊息: require(): Failed opening required '/home2/yusyuuco/public_html/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-waf/src/../rules/allow-ip.php' (include_path='/home2/yusyuuco/public_html/wp-content/plugins/backwpup/vendor/pear/archive_tar:/home2/yusyuuco/public_html/wp-content/plugins/backwpup/vendor/pear/console_getopt:/home2/yusyuuco/public_html/wp-content/plugins/backwpup/vendor/pear/pear-core-minimal/src:/home2/yusyuuco/public_html/wp-content/plugins/backwpup/vendor/pear/pear_exception:.:/opt/cpanel/ea-php74/root/usr/share/pear')
提醒一下,大家在操作時記得請先評估停用或刪除外掛後造成的影響,免得引起更嚴重的問題。
四、結語
以上是這次的分享,希望有幫助您解決問題,讓網站恢復運行。
感謝您的閱讀。
2022.11.2