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] :
- function spip_connect_db(
- $host, // serveur (souvent 'localhost', pris par défaut)
- $port, // souvent généré en fonction du type de la BDD (3306 ou 1521
- $login, // identifiants de connexion pour l'accès SPIP à la BDD
- $pass, // (necessite droits de création de base !)
- $db = '', // le nom identifiant la base de données voulue
- $type = 'mysql', // types : mysql / sqlite / pg => voir : ./ecrire/req/*.php
- $prefixe = '', // toutes les fonctions repassent par le préfixe standard spip_
- $auth = '', // la présence de 'ldap' induit la création connexe d'un ldap.php
- $charset = '' // ajout SPIP 3.2 : utf8 désormais standard implicite
- ) {
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
, 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.
Article publié le 29 juin 2018, et actualisé en août 2018 .
Répondre à cet article