Cosa fare quando non si dispone dei permessi sufficienti per aggiornare WordPress, installare plugin e altre operazioni

Qualche volta può succedere che non sia più possibile fare gli aggiornamenti automatici di WordPress o dei suoi plugin, o che non sia possibile installare nuovi plugin, o altri problemi di questo tipo. In certi casi potrebbe accadere che manchino anche la voce “Aggiornamenti” nel menu ‘Bacheca’, o che manchi la voce “Aggiungi nuovo” nel menu ‘Plugin’. O che, anche se queste voci sono presenti, quando si va a cliccarle appaia questo messaggio:

Non si dispone di permessi sufficienti per accedere a questa pagina” (in italiano).

You do not have sufficient permissions to access this page” (in inglese).

Questo problema può dare molto fastidio perché obbliga a fare installazioni e aggiornamenti manuali, rendendo la gestione del blog molto macchinosa e laboriosa (specie quando gli aggiornamenti si susseguono a ritmi molto rapidi).

Le cause di questo tipo di problemi possono essere di vario tipo, vediamo come riconoscerle e come risolvere caso per caso.

Non puoi disporre di determinati permessi perché non sei amministratore del blog

Se non sei amministratore del blog, ma solo un autore, editore o collaboratore, non puoi avere tutti i permessi che ha un amministratore. Chiedi all’amministratore di svolgere i compiti che tu non puoi fare.

Hai una versione troppo vecchia di PHP o MySQL

A partire dalla versione 3.2 WordPress ha bisogno di  PHP 5.2 (o superiore) e di MySQL 5.0.15 (o superiore). Se per caso o per sbaglio dovessi avere una versione inferiore di PHP o MySQL è impossibile aggiornare ad una versione di WordPress superiore alla 3.1. Esiste un plugin che ti permette di verificare le versioni di cui disponi attualmente: si chiama Heath Check Plugin; installalo (anche usando questo link di installazione rapida) e controlla se hai PHP e MySQL alla giusta versione.

Hai impostato erroneamente i permessi dei file

Ogni file e cartella che hai installato in remoto è associata ad un numero che ne determina i permessi. Questi numeri sono visibili collegandosi via FTP; controlla che le cartelle abbiano tutte il numero  775 e che i file abbiano tutti il numero 664.

Hai installato un plugin difettoso

E’ possibile che qualche plugin che hai installato ti causi questo tipo di problemi. Prova a disattivare i plugin e vedere se senza plugin ti compare ancora il messaggio che ti dice che non disponi dei permessi necessari. Se non ti compare più, allora vuol dire che è proprio un plugin la causa del problema; prova a riattivare i plugin uno ad uno, finché non individui qual è quello che ti dà problemi; disattivalo e segnala la cosa al creatore del plugin.

Hai rinominato i prefissi delle tabelle del database

Se le tabelle di WordPress sono state rinominate cambiando il prefisso (ad esempio, ti ritrovi con tabelle con prefisso pippo_ invece che avere le tabelle con prefisso wp_), allora può darsi che alcuni valori del database non siano stati aggiornati e che mantengano ancora il riferimento alle tabelle con vecchio prefisso. Devi entrare nel database tramite PhpMyAdmin ed eseguire un controllo; controlla in particolare i valori meta_key nella tabella usermeta, e i valori option_name nella tabella user_roles. Se hanno un prefisso che non coincide con quello attuale, aggiornalo tu.

Dati mancanti nel database

I ‘poteri’ di tutti gli utenti del blog sono determinati dal database; cioè nel momento in cui tu associ un determinato utente ad un determinato ruolo (as esempio: Pippo è amministatore, Paperino è editore, Minnie è autore) WordPress sa in concreto quali ‘poteri’ spettano a questi ruoli perché è nel database che c’è scritto cosa possono e non possono fare queste figure all’interno di WordPress. Se c’è un errore o un dato mancante nel database, allora è possibile che certi ‘ruoli’ non abbiamo i ‘poteri’ che di norma dovrebbero avere.

Per controllare il database relativamente ai permessi assegnati ai singoli ruoli, bisogna andare nella tabella wp_options, nel record col nome wp_user_roles (è un po’ avanti, devi scorrere le pagine per trovarlo). In questo record i permessi sono scritti in forma di codice; per decodificare questo codice, puoi usare uno strumento come Unserialize, che trasfroma quella stringa di numeretti in qualcosa di più comprensibile; in questo modo puoi vedere come ai singoli ruoli utente di WordPress (amministratore, editore, autore, sottoscrittore) siano stati assegnati dei poteri ben precisi. Se noti che, ad esempio, all’amministratore mancano certi poteri, li devi aggiungere.

Questi sono i permessi che dovrebbero di norma essere associati ai vari ruoli:

a:5:{s:13:"administrator";a:2:{s:4:"name";s:13:"Administrator";s:12:"capabilities";a:63:{s:13:"switch_themes";b:1;s:11:"edit_themes";b:1;s:16:"activate_plugins";b:1;s:12:"edit_plugins";b:1;s:10:"edit_users";b:1;s:10:"edit_files";b:1;s:14:"manage_options";b:1;s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:6:"import";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:8:"level_10";b:1;s:7:"level_9";b:1;s:7:"level_8";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:17:"edit_others_pages";b:1;s:20:"edit_published_pages";b:1;s:13:"publish_pages";b:1;s:12:"delete_pages";b:1;s:19:"delete_others_pages";b:1;s:22:"delete_published_pages";b:1;s:12:"delete_posts";b:1;s:19:"delete_others_posts";b:1;s:22:"delete_published_posts";b:1;s:20:"delete_private_posts";b:1;s:18:"edit_private_posts";b:1;s:18:"read_private_posts";b:1;s:20:"delete_private_pages";b:1;s:18:"edit_private_pages";b:1;s:18:"read_private_pages";b:1;s:12:"delete_users";b:1;s:12:"create_users";b:1;s:17:"unfiltered_upload";b:1;s:14:"edit_dashboard";b:1;s:14:"update_plugins";b:1;s:14:"delete_plugins";b:1;s:15:"install_plugins";b:1;s:13:"update_themes";b:1;s:14:"install_themes";b:1;s:11:"update_core";b:1;s:10:"list_users";b:1;s:12:"remove_users";b:1;s:9:"add_users";b:1;s:13:"promote_users";b:1;s:18:"edit_theme_options";b:1;s:13:"delete_themes";b:1;s:6:"export";b:1;s:14:"manage_ratings";b:1;}}s:6:"editor";a:2:{s:4:"name";s:6:"Editor";s:12:"capabilities";a:34:{s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:17:"edit_others_pages";b:1;s:20:"edit_published_pages";b:1;s:13:"publish_pages";b:1;s:12:"delete_pages";b:1;s:19:"delete_others_pages";b:1;s:22:"delete_published_pages";b:1;s:12:"delete_posts";b:1;s:19:"delete_others_posts";b:1;s:22:"delete_published_posts";b:1;s:20:"delete_private_posts";b:1;s:18:"edit_private_posts";b:1;s:18:"read_private_posts";b:1;s:20:"delete_private_pages";b:1;s:18:"edit_private_pages";b:1;s:18:"read_private_pages";b:1;}}s:6:"author";a:2:{s:4:"name";s:6:"Author";s:12:"capabilities";a:10:{s:12:"upload_files";b:1;s:10:"edit_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:4:"read";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:12:"delete_posts";b:1;s:22:"delete_published_posts";b:1;}}s:11:"contributor";a:2:{s:4:"name";s:11:"Contributor";s:12:"capabilities";a:5:{s:10:"edit_posts";b:1;s:4:"read";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:12:"delete_posts";b:1;}}s:10:"subscriber";a:2:{s:4:"name";s:10:"Subscriber";s:12:"capabilities";a:2:{s:4:"read";b:1;s:7:"level_0";b:1;}}}

Tramite Unserialize si vede che il codice qui sopra ha questo significato:

array (
'administrator' =>
array (
'name' => 'Administrator',
'capabilities' =>
array (
'switch_themes' => true,
'edit_themes' => true,
'activate_plugins' => true,
'edit_plugins' => true,
'edit_users' => true,
'edit_files' => true,
'manage_options' => true,
'moderate_comments' => true,
'manage_categories' => true,
'manage_links' => true,
'upload_files' => true,
'import' => true,
'unfiltered_html' => true,
'edit_posts' => true,
'edit_others_posts' => true,
'edit_published_posts' => true,
'publish_posts' => true,
'edit_pages' => true,
'read' => true,
'level_10' => true,
'level_9' => true,
'level_8' => true,
'level_7' => true,
'level_6' => true,
'level_5' => true,
'level_4' => true,
'level_3' => true,
'level_2' => true,
'level_1' => true,
'level_0' => true,
'edit_others_pages' => true,
'edit_published_pages' => true,
'publish_pages' => true,
'delete_pages' => true,
'delete_others_pages' => true,
'delete_published_pages' => true,
'delete_posts' => true,
'delete_others_posts' => true,
'delete_published_posts' => true,
'delete_private_posts' => true,
'edit_private_posts' => true,
'read_private_posts' => true,
'delete_private_pages' => true,
'edit_private_pages' => true,
'read_private_pages' => true,
'delete_users' => true,
'create_users' => true,
'unfiltered_upload' => true,
'edit_dashboard' => true,
'update_plugins' => true,
'delete_plugins' => true,
'install_plugins' => true,
'update_themes' => true,
'install_themes' => true,
'update_core' => true,
'list_users' => true,
'remove_users' => true,
'add_users' => true,
'promote_users' => true,
'edit_theme_options' => true,
'delete_themes' => true,
'export' => true,
'manage_ratings' => true,
),
),
'editor' =>
array (
'name' => 'Editor',
'capabilities' =>
array (
'moderate_comments' => true,
'manage_categories' => true,
'manage_links' => true,
'upload_files' => true,
'unfiltered_html' => true,
'edit_posts' => true,
'edit_others_posts' => true,
'edit_published_posts' => true,
'publish_posts' => true,
'edit_pages' => true,
'read' => true,
'level_7' => true,
'level_6' => true,
'level_5' => true,
'level_4' => true,
'level_3' => true,
'level_2' => true,
'level_1' => true,
'level_0' => true,
'edit_others_pages' => true,
'edit_published_pages' => true,
'publish_pages' => true,
'delete_pages' => true,
'delete_others_pages' => true,
'delete_published_pages' => true,
'delete_posts' => true,
'delete_others_posts' => true,
'delete_published_posts' => true,
'delete_private_posts' => true,
'edit_private_posts' => true,
'read_private_posts' => true,
'delete_private_pages' => true,
'edit_private_pages' => true,
'read_private_pages' => true,
),
),
'author' =>
array (
'name' => 'Author',
'capabilities' =>
array (
'upload_files' => true,
'edit_posts' => true,
'edit_published_posts' => true,
'publish_posts' => true,
'read' => true,
'level_2' => true,
'level_1' => true,
'level_0' => true,
'delete_posts' => true,
'delete_published_posts' => true,
),
),
'contributor' =>
array (
'name' => 'Contributor',
'capabilities' =>
array (
'edit_posts' => true,
'read' => true,
'level_1' => true,
'level_0' => true,
'delete_posts' => true,
),
),
'subscriber' =>
array (
'name' => 'Subscriber',
'capabilities' =>
array (
'read' => true,
'level_0' => true,
),
),
)

 

Se nel tuo database manca qualcuno dei permessi associato al tuo ruolo, allora ecco spiegato il perché non riesci a fare determinate  cose, come ad esempio fare gli aggiornamenti automatici, installare e aggiornare i plugin, installare e aggiornare i temi, ecc.

Copia e incolla il codice corrispondente e aggiungilo dove manca. Ad esempio, se vedi che all’amministratore manca 'update_core' => true, allora devi andare ad aggiungere s:11:"update_core";b:1; nella stringa, all’interno delle parentesi graffe.

Attenzione: il codice comincia così:

a:5:{s:13:"administrator";a:2:{s:4:"name";s:13:"Administrator";s:12:"capabilities";a:(NN):{

Al posto di NN c’è un numero che indica gli array: se aggiungi un array, devi aumentare quel numero di uno; se ne aggiungi due, lo aumenti di due, e così via. Se il numero di array dichiarato non coincide con il numero di array effettivo, il codice sarà interpretato come errato e non funzionerà. Ecco perché è importante ricordarsi di aggiornare quel valore.

FONTI:

WordPress non si dispone di permessi sufficienti per accedere a questa pagina
You do not have sufficient permissions to update plugins for this blog

5 thoughts on “Cosa fare quando non si dispone dei permessi sufficienti per aggiornare WordPress, installare plugin e altre operazioni

  1. Ciao…ho spostato wordpress per esigenze da remoto a locale, e da locale a remoto2 (cioè un’altra versione). Da remoto a locale è andato tutto bene, ho cambiato solo il nome del database, mentre il prefisso delle tabello è stato lasciato uguale. Per la seconda versione del blog su remoto, ho dovuto cambiare il prefisso delle tabelle (altervista). Ho fatto in questo modo:
    -preso il database da locale e cambiati i prefissi delle tabelle con notepad++ ;
    -caricato il blog e cambiato in config.php il table-prefix come sopra;

    Funziona tutto il blog, ma non riesco ad accedere alla pagina di amministrazione, dato che mi viene fuori quel messaggio sui permessi non sufficienti.
    Come posso risolvere?
    L’unico problema al momento che mi viene in mente è che ci potrebbe essere confusione nella sostituzione, dato che il prefix era del tipo xxxX_ e il nome utente era xxxX per accedere come amministratore….Io ho effettuato la sostituzione di xxxX_ con notepad++…. E’ da eri che non so come risolvere..Uno dei plugin non funziona correttamente : ho cambiato il nome mettendo OLD_nomePlugin per disattivarlo, ma anche così non ho l’accesso alla parte amministrativa.

    Grazie per l’eventuale risposta.

  2. @user: potrebbe essere un problema dovuto alla sostituzione che hai fatto con NotePad (però, in teoria, se tui hai messo xxxX_ nel campo ‘cerca e sostituisci’, NotePad dovrebbe aver sostituito solo xxxX_, non xxxX).
    Il problema potrebbe anche essere dovuto a MySQL: sei sicuro di avere la giusta versione di MySQL? (vedi ciò che ho scritto al paragrafo “Hai una versione troppo vecchia di PHP o MySQL).
    Infine, per vedere bene la questione ‘permessi’, dovresti fare quanto ho descritto nell’ultimo paragrafo. Solo così puoi vedere se i permessi sono impostati come dovrebbero essere, o se qualcosa non va.
    In bocca al lupo!

  3. @elisa : grazie per la risposta velocissima :) …
    Si ho utilizzato notepad++ con la _ finale, quindi non dovrei avere quei problemi..
    Di php c’è la PHP 5.2.13
    Di mysql c’è la 5.1.49 (Client API version)
    Per quanto riguarda i permessi, copiando in toto il DB sono gli stessi di quelli che ho per accedere in locale, quindi in remoto dovrei entrare senza problemi a rigor di logica ma niente! :(
    Per i permessi dei file, da FPT ho dato 664 e 775 come scritto nell’articolo..

    Altre soluzioni?
    Grazie!

  4. Ho risolto! =)
    In effetti è quello che pensavo…diciamo un errorino di notepad++
    Il nome del prefisso delle tabelle era xxxx_ (in sql me li porta in lowercase) e avrò fatto/evitato il case sensitive delle parole da cambiare.
    Così facendo in pratica i campi della tabella in wp_usermeta, nel mio caso xxx_usermeta, in particolare wp_capabilities, wp_user_level, wp_dashbord[..] , wp_user-settings, wp_user-settings-time erano rimaste con il vecchio prefisso, uguale appunto al nome dell’amministratore (questo scritto con l’ultima lettera in maiuscolo però). Mi è bastato quindi cambiare questo valore, mettendo il prefisso per tutte le altre tabelle.

    Grazie per l’aiuto! :)
    Buon lavoro!

  5. @user: in effetti, quando si operano le sostituzioni, bisogna stare sempre molto attenti. Bene, sono contenta che tutto si sia risolto! Ciao e buon proseguimento! :)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *