Activation Accès restreint impossible

Bonjour à tous, j’essaie d’activer le plugin Accès restreint, sans succès.

Spip 3.2.14, PHP 7.2, Acces retreint 4.2.4

Lors de l’activation, j’ai des warnings de partout, le site devient inaccessible jusqu’à ce que je supprime Acces restreint par FTP.

J’ai essayé de déactiver tous les plugins pour n’activer que Accès restreint : même problème.

J’ai bien veillé à vider le cache par FTP, (sans succès) Je ne peux plus accéder au cache dans la zone privée dès que j’active Accès restreint.

Les logs me disent : Erreur 1146 de mysql: Table ‹ lappelsite.spip_zones_liens › doesn’t exist

Est-ce que cela signifie que le plugin n’a pas créé cette table ?

Merci,

Éric LM

Voilà précisément ce que disent les logs lors de la tentative d’activation :

SELECT id_zone
FROM lappelsite.spip_zones_liens
WHERE objet=‹ auteur › AND id_objet=10
2022-05-02 15:31:41 176.149.71.71 (pid 28409) :Pri:ERREUR: Erreur 1146 de mysql: Table ‹ lappelsite.spip_zones_liens › doesn’t exist
in /home/lappel/www/plugins/auto/acces_restreint/inc/accesrestreint.php L148 [sql_allfetsel(),accesrestreint_liste_zones_appartenance_auteur(),accesrestreint_liste_zones_autorisees(),minipipe(),execute_pipeline_accesrestreint_liste_zones_autorisees(),pipeline()]
SELECT id_zone
FROM lappelsite.spip_zones_liens
WHERE objet=‹ auteur › AND id_objet=10
2022-05-02 15:31:43 176.149.71.71 (pid 28409) :Pri:ERREUR: Erreur 1146 de mysql: Table ‹ lappelsite.spip_zones_liens › doesn’t exist
in /home/lappel/www/plugins/auto/acces_restreint/inc/accesrestreint.php L148 [sql_allfetsel(),accesrestreint_liste_zones_appartenance_auteur(),accesrestreint_liste_zones_autorisees(),minipipe(),execute_pipeline_accesrestreint_liste_zones_autorisees(),pipeline()]
SELECT id_zone
FROM lappelsite.spip_zones_liens
WHERE objet=‹ auteur › AND id_objet=10
2022-05-02 15:31:43 176.149.71.71 (pid 28412) :Pri:ERREUR: Erreur 1146 de mysql: Table ‹ lappelsite.spip_zones_liens › doesn’t exist
in /home/lappel/www/plugins/auto/acces_restreint/inc/accesrestreint.php L148 [sql_allfetsel(),accesrestreint_liste_zones_appartenance_auteur(),accesrestreint_liste_zones_autorisees(),minipipe(),execute_pipeline_accesrestreint_liste_zones_autorisees(),pipeline()]
SELECT id_zone
FROM lappelsite.spip_zones_liens
WHERE objet=‹ auteur › AND id_objet=10
2022-05-02 15:32:32 185.16.252.2 (pid 29767) :Pub:ERREUR: Erreur 1146 de mysql: Table ‹ lappelsite.spip_zones_liens › doesn’t exist
in /home/lappel/www/plugins/auto/acces_restreint/inc/accesrestreint.php L346 [sql_allfetsel(),accesrestreint_liste_contenu_zone_objets(),accesrestreint_liste_objets_exclus(),BOUCLE_principalehtml_03a7006edafee7bd957c9b8f86bcaa38(),html_03a7006edafee7bd957c9b8f86bcaa38(),public_parametrer_dist(),public_produire_page_dist(),assembler(),include()]
SELECT id_objet
FROM lappelsite.spip_zones_liens AS zo INNER JOIN lappelsite.spip_zones AS z ON zo.id_zone=z.id_zone
WHERE zo.objet=‹ article ›
2022-05-02 15:32:32 185.16.252.2 (pid 29767) :Pub:ERREUR: Erreur 1146 de mysql: Table ‹ lappelsite.spip_zones_liens › doesn’t exist
in /home/lappel/www/plugins/auto/acces_restreint/inc/accesrestreint.php L72 [sql_allfetsel(),accesrestreint_liste_contenu_zone_rub_direct(),accesrestreint_liste_contenu_zone_rub(),accesrestreint_liste_rubriques_exclues(),BOUCLE_principalehtml_03a7006edafee7bd957c9b8f86bcaa38(),html_03a7006edafee7bd957c9b8f86bcaa38(),public_parametrer_dist(),public_produire_page_dist(),assembler(),include()]
SELECT id_objet
FROM lappelsite.spip_zones_liens AS zr INNER JOIN lappelsite.spip_zones AS z ON zr.id_zone=z.id_zone
WHERE publique=‹ oui ›
AND zr.objet=‹ rubrique ›
2022-05-02 15:32:32 185.16.252.2 (pid 29767) :Pub:ERREUR: Erreur 1146 de mysql: Table ‹ lappelsite.spip_zones_liens › doesn’t exist
in /home/lappel/www/plugins/auto/acces_restreint/inc/accesrestreint.php L346 [sql_allfetsel(),accesrestreint_liste_contenu_zone_objets(),accesrestreint_liste_objets_exclus(),BOUCLE_documents_portfoliohtml_df5f04b442eccbc13e99d3f980f099f2(),html_df5f04b442eccbc13e99d3f980f099f2(),public_parametrer_dist(),public_produire_page_dist(),inclure_page(),evaluer_fond(),recuperer_fond(),BOUCLE_principalehtml_03a7006edafee7bd957c9b8f86bcaa38(),html_03a7006edafee7bd957c9b8f86bcaa38(),public_parametrer_dist(),public_produire_page_dist(),assembler(),include()]
SELECT id_objet
FROM lappelsite.spip_zones_liens AS zo INNER JOIN lappelsite.spip_zones AS z ON zo.id_zone=z.id_zone
WHERE zo.objet=‹ breve ›

Est-ce que par hasard ton MySQL est réglé en UTF8MB4 par défaut ?

Merci pour ta réponse. Avec Adminer, dans la page « Variables » de la base, je peux lire :

character_set_client utf8mb4
character_set_connection utf8mb4
Alors, de là à dire qu'il est sur UTF8MB4 par défaut, je n'en sais rien, le site a été installé par un autre webmaster il y a... longtemps ! Merci, Éric LM

Tu es donc concerné par ce bug :

Le plus simple est de réussir à dire que ta base de données serait en utf8mb3_general_ci pour la création de nouvelles tables.

Mais il faudrait aussi :

Et c’est cette ligne qui provoque un index trop grand en utf8mb4 :
https://git.spip.net/spip-contrib-extensions/acces_restreint/src/branch/master/base/accesrestreint.php#L44

1 « J'aime »

Merci… Je regarde tout cela demain.
Bonne soirée,
Éric LM

Et si je change le code de ma base de données ?

Désolé, impossible de me connecter. Manifestement, je n’ai pas accès à cette zone, et je ne vois pas où créer un compte. J’ai voulu me connecter avec un compte Git, mais une fois le compte Git créé, je ne peux pas le lier à la page GitSpip.

Je viens de récuperer l’accès à la base par PHPMyAdmin, et effectivement, j’ai :
Interclassement pour la connexion au serveur : utf8mb4_unicode_ci

Si je change le codage et que je passe à utf8_unicode_ci :

  • Est-ce que cela résout mon problème avec l’activation de Accès Restreint ?
  • Quelles sont les conséquences pour le reste du site ?

(c’est la première fois que j’ai un codage de ce genre sur une base de données, désolé)
Merci, bonne journée,
Éric LM

Pour la forge, c’est via contrib qu’on peut s’inscrire : SPIP-Contrib (le 2e formulaire).

Et il faut attendre que le compte soit validé manuellement.

Pour le passage en utf8_unicode_ci, le seul risque, c’est de perdre des emoj récentes (codées en utf8mb4).

Par ailleurs, faire ce changement ne devrait pas changer les tables existantes, juste être le paramétrage par défaut des nouvelles tables.

Et, oui, ça va permettre d’installer les tables du plugin accès restreint.

Désolé… le passage en utf8_unicode_ci n’a rien changé : impossible d’activer le plugin Accès Restreint. J’attends la validation de mon inscription sur la forge pour transmettre plus de détails.
Merci, bonne journée !
Éric LM

Est-ce que tu as bien, depuis ta dernière tentative de l’activer, non pas désactivé le plugin, mais désinstallé ?

Oui, à chaque fois, je suis obligé de supprimer le dossier par FTP, sinon je n’accède plus au site. Je vide le cache également.

C’est bien ce que je dis, tu n’as pas désinstallé le plugin au sens de SPIP : la table spip_meta contient toujours l’information que le plugin est installé.

Il faut donc avec phpmyadmin supprimer les lignes :

  • accesrestreint_base_version
  • accesrestreint_zones_si_connexion

Ok. J’ai supprimé accesrestreint_base_version, je n’ai pas trouvé accesrestreint_zones_si_connexion.
Et cette fois, l’install s’est bien faite. Un grand merci pour le coup de main !
C’est une drôle d’histoire, tout de même. Bonne journée !
Éric LM
Pour supprimer le plugin, je ne pouvais pas faire autrement que de tout supprimer par FTP, car le backoffice n’était plus accessible !

1 « J'aime »