class-wp-roles.php 中的錯誤 - 'array_keys() 期望參數 1 為陣列”
P粉253518620
2023-08-30 13:11:16
<p>幾天前,我注意到我無法再存取 WordPress 中的管理儀表板。我會使用正常的管理員使用者名稱/密碼登錄,但隨後我會被重定向到網站主頁而不是 WordPress 儀表板。並且頁面頂部的管理欄沒有顯示轉到儀表板或編輯頁面等的常用選項。之後當我嘗試轉到 wp-admin 時,我收到一條錯誤訊息“抱歉,您不允許訪問此頁面。”</p>
<p>當我啟用 wp_debug 時,我開始看到以下錯誤訊息:</p>
<blockquote>
<p>警告:array_keys() 期望參數 1 為數組,在 /var/www/wp-includes/class-wp-roles.php 第 291 行給出的字串</p>
<p>警告:在第 291 行 /var/www/wp-includes/class-wp-roles.php 中為 foreach() 提供的參數無效</p>
<p>警告:array_keys() 期望參數 1 為數組,在 /var/www/wp-includes/class-wp-roles.php 第 291 行給出的字串</p>
<p>警告:在第 291 行 /var/www/wp-includes/class-wp-roles.php 中為 foreach() 提供的參數無效</p>
</blockquote>
<p>即使我停用了所有插件,也會顯示此錯誤,並且無論目前啟動哪個主題,它都會顯示。我在搜尋中找不到太多有關此錯誤的信息,並且有關 class-wp-roles 的幾個線程特定於我不使用的某些插件。 </p>
<p>我做了正常的首次檢查,例如關閉所有外掛程式、檢查 wp-config.php、檢查檔案權限、檢查 phpmyadmin 中的帳戶角色/權限,甚至使用 phpmyadmin 建立了一個新的管理員使用者。我還在“安全模式”下加載了該網站,該模式禁用所有外掛程式並預設為 WordPress 中的“二十二十”主題。仍然無法存取 WordPress 儀表板。 wp-admin.php。 </p>
<p>一些附加信息,我的網站使用 Storefront 主題和 WooCommerce,但由於即使這兩個主題均未激活,也會顯示此錯誤,所以這應該不重要,對吧?我的網站託管在 GoDaddy 上,當我第一次遇到此錯誤時,網站使用的是 WordPress 6.0.3,但昨天它自動升級到 6.1.1,但我仍然遇到同樣的問題。 (我真的希望升級能夠解決這個問題。)該網站的其他一切似乎都正常工作。我只是無法存取管理儀表板!非常感謝任何對此的幫助。 </p>
哇,太快了。我今天創建了一個 Stack Overflow 帳戶,就是為了發布這個問題,經過幾天的頭撞桌子試圖弄清楚這個問題,我在幾個小時內得到了解決方案。
對於遇到類似問題的人,請務必先進行定期檢查以排除這些問題,然後前往您網站的 phpmyadmin,然後前往 wp_options > 表。尋找 wp_user_roles 條目。確保它有這樣的內容:
我的 wp_user_roles 實際上只是將其設為值:
事實證明這是錯誤的值!我不知道這是怎麼發生的。在這個問題之前,我根本沒有在 phpmyadmin 中亂搞。應該是插件什麼的。當我用正確的角色和功能清單取代該 AOK 時,我立即能夠再次存取 WordPress 管理儀表板。
如果您使用的是 WooCommerce,則需要執行額外步驟:您需要停用並重新啟用 WooCommerce 外掛程式。這是因為上面的角色清單缺少一個特定於 WooCommerce 的角色,稱為“商店經理”,您可以透過該角色存取 WooCommerce 的產品、訂單、分析、優惠券等頁面。
就是這樣!非常感謝 @VijayHardaha 幫助解決這個問題!我希望有一天這個帖子可以幫助其他人。