Ralat dalam class-wp-roles.php - "array_keys() menjangkakan hujah 1 menjadi tatasusunan"
P粉253518620
2023-08-30 13:11:16
<p>Beberapa hari lalu saya perasan bahawa saya tidak lagi boleh mengakses papan pemuka pentadbir dalam WordPress. Saya akan log masuk menggunakan nama pengguna/kata laluan pentadbir biasa saya, tetapi kemudian saya akan dialihkan ke halaman utama tapak web dan bukannya papan pemuka WordPress. Dan bar pentadbir di bahagian atas halaman tidak menunjukkan pilihan biasa untuk pergi ke papan pemuka atau halaman mengedit, dsb. Apabila saya kemudian cuba pergi ke wp-admin saya mendapat mesej ralat "Maaf, anda tidak dibenarkan mengakses halaman ini."</p>
<p>Apabila saya mendayakan wp_debug, saya mula melihat mesej ralat berikut: </p>
<blockquote>
<p>Amaran: array_keys() menjangkakan hujah 1 ialah tatasusunan, rentetan yang diberikan dalam /var/www/wp-includes/class-wp-roles.php baris 291</p>
<p>Amaran: Argumen tidak sah dibekalkan kepada foreach() dalam /var/www/wp-includes/class-wp-roles.php pada baris 291</p>
<p>Amaran: array_keys() menjangkakan hujah 1 ialah tatasusunan, rentetan yang diberikan dalam /var/www/wp-includes/class-wp-roles.php baris 291</p>
<p>Amaran: Argumen tidak sah dibekalkan kepada foreach() dalam /var/www/wp-includes/class-wp-roles.php pada baris 291</p>
</blockquote>
<p>Ralat ini muncul walaupun saya melumpuhkan semua pemalam dan ia muncul tidak kira tema mana yang sedang aktif. Saya tidak dapat mencari banyak maklumat tentang ralat ini dalam carian saya, dan beberapa utas tentang class-wp-roles adalah khusus untuk pemalam tertentu yang saya tidak gunakan. </p>
<p>Saya melakukan semakan pertama yang biasa seperti mematikan semua pemalam, menyemak wp-config.php, menyemak kebenaran fail, menyemak peranan/keizinan akaun dalam phpmyadmin, dan juga mencipta pengguna pentadbir baharu menggunakan phpmyadmin. Saya juga memuatkan tapak dalam Mod Selamat, yang melumpuhkan semua pemalam dan lalai kepada tema Twenty Twenty dalam WordPress. Masih tidak dapat mengakses papan pemuka WordPress. wp-admin.php. </p>
<p>Sesetengah maklumat tambahan, tapak web saya menggunakan tema Storefront dan WooCommerce, tetapi kerana ralat ini muncul walaupun kedua-dua tema tidak diaktifkan, ia tidak sepatutnya menjadi masalah, bukan? Tapak web saya dihoskan di GoDaddy dan apabila saya mula-mula menemui ralat ini, tapak web itu menggunakan WordPress 6.0.3 tetapi semalam ia telah dinaik taraf secara automatik kepada 6.1.1 dan saya masih mengalami isu yang sama. (Saya benar-benar berharap peningkatan itu dapat menyelesaikan masalah ini.) Segala-galanya tentang tapak nampaknya berfungsi dengan baik. Saya tidak boleh mengakses papan pemuka pentadbir! Sebarang bantuan mengenai perkara ini amat dihargai. </p>
Wah, sungguh pantas. Saya mencipta akaun Stack Overflow hari ini hanya untuk menyiarkan soalan ini, dan selepas berhari-hari menghantukkan kepala saya di atas meja saya cuba memikirkan perkara ini, saya mendapat penyelesaiannya dalam masa beberapa jam.
Bagi sesiapa yang menghadapi isu yang sama, pastikan anda melakukan pemeriksaan biasa untuk menyelesaikan masalah ini dahulu, kemudian pergi ke phpmyadmin tapak anda dan kemudian ke jadual wp_options >. Cari entri wp_user_roles. Pastikan ia mempunyai sesuatu seperti ini:
Wp_user_roles saya sebenarnya hanya menetapkan ini kepada nilai:
Ternyata ini adalah nilai yang salah! Saya tidak tahu bagaimana ini berlaku. Sebelum soalan ini, saya tidak bermain-main dalam phpmyadmin sama sekali. Ia sepatutnya pemalam atau sesuatu. Apabila saya menggantikan AOK itu dengan senarai peranan dan ciri yang betul, saya serta-merta dapat mengakses papan pemuka pentadbir WordPress sekali lagi.
Jika anda menggunakan WooCommerce, terdapat langkah tambahan: anda perlu menyahaktifkan dan mengaktifkan semula pemalam WooCommerce. Ini kerana senarai peranan di atas tiada peranan khusus WooCommerce yang dipanggil "Pengurus Kedai", yang memberi anda akses kepada produk, pesanan, analitik, kupon dan banyak lagi halaman WooCommerce.
Itu sahaja! Terima kasih banyak kepada @VijayHardaha kerana membantu dengan ini! Saya harap siaran ini dapat membantu orang lain suatu hari nanti.