(cet article regroupe des informations plus techniques)

La Connexion SPIP - BDD

  l’interface SPIP en PHP

SPIP se distingue par une capacité à s’installer ou à utiliser divers moteurs de bases de données ; voyez d’abord la page présentant les divers SGBD : moteurs et documentations SQL / SPIP, d’un point de vue externe.

vous trouverez ci-après quelques informations d’ordre plus technique, pour vous orienter éventuellement dans l’exploration technique SPIP de ces solutions.

Article publié le 29 juin 2018, et actualisé en août 2018

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Tout SPIP s’organise autour de l’usage d’une base de données contenant les articles, rubriques, auteurs, droits et autres commentaires ou Objets éditoriaux ; la déclaration de la base de données d’isntallation se fait dans un fichier connect.php.

 La connexion spip_connect_db

La chaine de connexion au SGBD est générée par l’installateur SPIP dans le fichier ./config/connect.php, générant l’appel à la fonction générique d’appel proposée dans le fichier ./ecrire/base/connect_sql.php [169..229] [1] :

  1. function spip_connect_db(
  2.         $host,                 // serveur (souvent 'localhost', pris par défaut)
  3.         $port,                // souvent généré en fonction du type de la BDD (3306 ou 1521
  4.         $login,                 //       identifiants de connexion pour l'accès SPIP à la BDD    
  5.         $pass,               //        (necessite droits de création de base !)
  6.         $db = '',           // le nom identifiant la base de données voulue
  7.         $type = 'mysql',    // types : mysql  / sqlite / pg => voir : ./ecrire/req/*.php
  8.         $prefixe = '',        //     toutes les fonctions repassent par le préfixe standard spip_
  9.         $auth = '',           //     la présence de 'ldap' induit la création connexe d'un ldap.php
  10.         $charset = ''        // ajout SPIP 3.2 : utf8 désormais standard implicite
  11. ) {

Télécharger


Si les premiers paramètres sont classiques à toutes les connexions serveur (identifiant la machine cible, la Base de données et l’utilisateur déclaré concernés, les numérotation de version de cette fonction indique des paramètres supplémentaires, correspondant à $GLOBALS['spip_connect_version'] :

  • la version courante est 0.8 (depuis SPIP 3.2)
  • la version 0.8 indique un serveur d’authentification comme 9e arg
  • la version 0.7 indique un serveur d’authentification comme 8e arg
  • la version 0.6 indique le prefixe comme 7e arg
  • la version 0.5 indique le type de serveur comme 6e arg
  • les autres fonctionnent toujours, meme si la version 0.0 (non numerotee) doit etre refaite par un admin/FTP

 Le SGBD utilisable

Le paramètre de type permet d’indiquer le moteur de SGBD ciblé : ce peut être le traditionnel mysql (avec l’extension mysql</code{{<code>i depuis SPIP 3.1 ou mysql auparavant), voire une installation MariaDB compatible, le moteur interne sqlite ou encore pg pour PostGreSQL ; d’autres développement sont facilement disponibles, comme une déjà ancienne implémentation pour Oracle (au moins utilisable en lecture, pour des tables externes), ou prochainement une implémentation PDO ?
L’implémentation est réalisée en deux couches : le code-source de SPIP (et -en principe- des plugins) utilise une API d’abstraction SQL (voir ./ecrire/base/abstract_sql.php : cette série de fonction d’accès préfixées par sql_* récupère la suite des paramètres de la requête compilés par SPIP, par exemple

  1. function sql_select ($select = array(), $from = array(), $where = array(),
  2.         $groupby = array(), $orderby = array(), $limit = '', $having = array(),
  3.         $serveur='', $option=true) {

Télécharger

, et lance l’appel à la bonne implémentation, la fonction physique corespondante chargée à partir de ./ecrire/req/, où il suffira de rajouter son interface-type....

L’interface interactive d’installation SPIP ne propose que MySQL ou SQLite (voire PG s’il est détecté dans les bibliothèques de PHP) ; mais vous pourrez facilement connecter un autre SGBD en adaptant manuellement le connect.php et une bibliothèque de SPIP ....

 MySQL ou MariaDB

Traditionnellement, les outils LAMP/WAMP travaillent avec MySQL : les développements PHP utilisaient donc l’extension mysql [2].
Pour php v7 celle-ci sera remplacée en interne par l’extension mysqli (qui n’admet pas exactement la même syntaxe), qui doit être opérationnelle depuis SPIP 3.1.


Merci de nous signaler les coquilles, imprécisions ou erreurs qui figureraient dans cette page.

[1Voir la syntaxe commentée et le source correspondant en https://doc.spip.org/@spip_connect_db...

[2A déclarer dans le php.ini correspondant au serveur web, donc en ajoutant/dé-commentant la ligne extension=php_mysql.so


Liens A2A visibles seulement pour les inscrits.
Liens visibles seulement pour les inscrits.

Article publié le 29 juin 2018, et actualisé en août 2018 .

Répondre à cet article