You are currently viewing Admin Moodle – le truc n°9 : exploiter la puissance du fichier config.php  [2023]

Admin Moodle – le truc n°9 : exploiter la puissance du fichier config.php [2023]

Le fichier config.php est le fichier de configuration de Moodle. Il est créé à l’installation de Moodle et contient une série de paramètres indispensables au fonctionnement du système : nom de la base données, chemin d’accès au répertoire moodledata, etc. Si vous avez utilisé l’installateur de Moodle, le fichier config.php a été généré automatiquement et contient les paramètres nécessaires. Mais saviez-vous que vous pouvez y ajouter d’autres paramètres qui pourront changer notoirement le comportement de votre Moodle, sans ajout de code ?

Pourquoi ajouter des paramètres ?

Votre interface administrateur de Moodle vous permet déjà d’adapter le comportement de Moodle à vos besoins spécifiques (si vous êtes Administrateur de votre site). Les paramètres du fichier de configuration vous permettent d’accéder à d’autres fonctionnalités, souvent plus techniques, qui ne sont pas reprises dans les pages d’administration.

Comment accéder au fichier de configuration ?

Quand vous louez un espace sur un des serveurs de votre hébergeur (OVH, O2Switch, Gandi, etc.) et que vous y installez Moodle, un ensemble de répertoire et de fichiers sont copiés sur ce serveur, à l’emplacement qui vous est réservé.

Typiquement, au même niveau que la racine de votre hébergement (html/, web/, htdocs/, etc. selon votre hébergeur), le répertoire moodledata va être créé et dans le répertoire racine, les fichiers et répertoires de Moodle vont être créés.

La structure d'installation typique de Moodle
La structure d’installation typique de Moodle

C’est dans ce répertoire moodle que vous retrouverez le fichier config.php.

Pour y accéder, vous aurez donc besoin d’un accès FTP, SFTP, ou shell au serveur et de leur identifiants de connexion. Si vous administrez vous-même votre plateforme, vous trouverez ces identifiants de connexion dans le tableau de bord de votre hébergeur.

Les composants du fichier de configuration de base

Une fois que vous avez accès au fichier config.php par une des méthodes citées, vous pouvez l’éditer afin de l’examiner.

Le fichier config.php qui a été configuré automatiquement contient les paramètres indispensables au bon fonctionnement de votre Moodle. Notez que vous pouvez aussi, si nécessaire, le créer manuellement.

<?php  // Moodle configuration file

unset($CFG);
global $CFG;
$CFG = new stdClass();

$CFG->dbtype    = 'mysqli';
$CFG->dblibrary = 'native';
$CFG->dbhost    = 'myDBserver';
$CFG->dbname    = 'myDBname';
$CFG->dbuser    = 'alfred';
$CFG->dbpass    = 'zpfn567àéàtu';
$CFG->prefix    = 'mdl_';
$CFG->dboptions = array (
  'dbpersist' => 0,
  'dbport' => '',
  'dbsocket' => '',
  'dbcollation' => 'utf8mb4_unicode_ci',
);

$CFG->wwwroot   = 'https://subdomain.coussement.info';
$CFG->dataroot  = '/vhosts/subdomain.coussement.info/moodledata';
$CFG->admin     = 'admin';

$CFG->directorypermissions = 02777;

require_once(__DIR__ . '/lib/setup.php');

// There is no php closing tag in this file,
// it is intentional because it prevents trailing whitespace problems!

Détaillons les différents paramètres qui constituent ce fichier… Nous commençons par un en-tête et une initialisation :

<?php  // Moodle configuration file

▶ en-tête obligatoire pour signaler au système qu’il s’agit d’un fichier PHP

unset($CFG);
global $CFG;
$CFG = new stdClass();

▶ initialisation de la variable $CFG, qui contiendra les paramètres de connexion au site.

Suivent ensuite la paramètres de configuration :

ParamètreTypeExplication
$CFG->dbtype StringLe type de système de base de données utilisé. Les quatres valeurs valides sont : mysql, pgsql, mssql, mariadb et oci
$CFG->dblibraryStringActuellement, seule la valeur native est acceptée
$CFG->dbhostStringL’adresse du serveur de base de données. Cela peur être localhost, une IP ou une URL
$CFG->dbnameStringLe nom de la base de données
$CFG->dbuserStringLe nom d’utilisateur de la base de données. Chez certains hébergeurs, il s’agit simplement de root
$CFG->dbpassStringLe mot de passe de la base de données. Chez certains hébergeurs, il s’agit simplement de '' (chaîne vide), surtout si votre dbhost est 'localhost'
$CFG->prefixStringPar défaut, toutes les tables de Moodle sont préfixées avec mdl_
$CFG->dboptionsArrayLes options pour la connexion à la base de données
'dbpersist'StringDes connexions persistantes à la base de données doivent-elles être utilisées ? Défini sur 'false' ou 0 pour plus de stabilité, ou sur 'true' ou 1 pour (parfois) améliorer les performances
'dbport'StringLe numéro de port TCP à utiliser lors de la connexion au serveur. Conservez la chaîne vide '' pour le port par défaut
'dbsocket'StringDétermine s’il faut utiliser la connexion via le socket UNIX.
Si vous le définissez sur 'true' ou 1 ou utilisez un chemin personnalisé, définissez dbhost sur 'localhost'
'dbcollation'StringMySQL utilise par défaut UTF-8 partiel ou complet. Si vous souhaitez utiliser UTF-8 partiel (trois octets), définissez cette option sur 'utf8_unicode_ci', sinon cette option
peut être supprimée pour MySQL (par défaut, elle sera
'utf8mb4_unicode_ci’. Cette option devrait
être supprimée pour toutes les autres bases de données
$CFG->wwwrootStringL’adresse web complète de votre site Moodle (y compris le http:// ou https://). N’indiquez pas de barre oblique de fin
$CFG->datarootStringChemin absolu vers l’emplacement du répertoire du dictionnaire de données moodledata. La valeur de ce chemin dépendra de votre hébergeur et du type de système d’exploitation qu’il utilise
$CFG->adminStringTrès peu d’hébergeurs utilisent /admin comme URL spéciale pour accéder à un panneau de configuration ou quelque chose du genre. Malheureusement, cela entre en conflit avec le emplacement standard pour les pages d’administration Moodle. Vous pouvez contourner ce problème en renommant le répertoire admin dans votre installation et en le mettant nouveau nom ici. par exemple 'moodleadmin'. Cela devrait corriger tous les liens d’administration dans Moodle. Remarque : cette fonctionnalité est obsolète depuis la version 4.2, mais a été conservée. Elle peut potentiellement aider à blinder Moodle comme des tentatives de hacking
$CFG->directorypermissionsSpecialDétermine les permissions (en format Unix) qui seront appliquées aux répertoires que Moodle créera. La valeur par défaut est 02777 (rwx)
require_once(__DIR__ . '/lib/setup.php');

▶ appel et lecture du fichier setup.php, qui est placé dans le répertoire lib/. Ce fichier contrôle la consistance du fichier config.php et, dans une certaine mesure, corrige les erreurs en attribuant par exemple des valeurs par défaut aux paramètres indispensables qui ont été oubliés.

Les paramètres optionnels

En date du 04/23, 812 paramètres existent pour le config.php de la version 4.1 ! Ils ne sont pas tous utilisés dans le processus d’installation de Moodle et ne sont pour la majorité pas accessibles depuis l’interface d’administration. Ces paramètres vous permettent de modifier le comportement de Moodle, sans devoir changer le moindre code !

Comment lister l’ensemble des paramètres disponibles ? En utilisant la puissance de grep ! Pour cela, placez-vous dans le répertoire où est installé votre Moodle et lancez la commande :

egrep -r -o -h '\$CFG->[a-zA-Z_][a-zA-Z0-9_]*' . | sort -k1 | uniq -c | sort -rnk1

Votre obtiendrez une liste des paramètres disponibles, classés par fréquence d’apparition dans le code. Cela vous permettra également de vérifier si le paramètre que vous souhaitez utiliser existe dans votre version de Moodle.

Je ne reprend ici qu’une quarantaine de paramètres, négligeant ceux qui ne sont utiles qu’aux designers et aux développeurs, ainsi que ceux qui sont obsolètes ou trop obscurs. Ces paramètres sont classés en ordre alphabétique. Le $CFG-> est omis dans la première colonne et est implicite.

ParamètreTypeExplication
admineditalwaysBinaryDéfinir cette valeur sur true permettra aux administrateurs de modifier n’importe quelle publication à tout moment
apacheloguserNumericDétermine comment le nom de l’utilisateur est utilisé dans les journaux du serveur Web Apache. Valeurs possibles : O (fonctionnalité désactivée – valeur par défaut), 1 (enregistrer l’ID de l’utilisateur), 2 (enregistrer le nom complet au format nettoyé. c’est-à-dire que Dark Vador sera affiché comme darth_vader) et 3 (utiliser le nom de l’utilisateur)
customfiletypesArrayPermet de personnaliser la liste de types de fichiers pris en charge. Définissez le type de la manière suivante :
$CFG->customfiletypes = array(
(objet)array(
'extension' => 'grenouille',
'icon' => 'archive',
'type' => 'application/grenouille',
'customdescription' => 'Archive de fichiers liés aux amphibiens'
'extension'StringL’extension du fichier (dans l’exemple ci-dessus, cela deviendrait *.grenouille)
'icon'StringLe type d’icône à utiliser, pris dans les images disponibles dans le dossier ./pix
'type'StringType du fichier
'customdescription'StringDescription libre du fichier
customfrontpageincludeStringVous permet d’utiliser votre propre version de la page d’accueil. C’est l’approche utilisée par moodle.org ! Remarquez que vous ne pouvez remplacer que la partie située entre l’en-tête et le pied. Les blocs rendus visibles le resteront également. Dans votre code, ne reprenez que la partie situées entre les balises <body> et </body>. Un exemple est proposé sur https://github.com/richardjonesnz/moodle-frontpage-insert
customscriptsStringPermet d’utiliser des scripts en remplacement de ceux fournis avec la version de Moodle (sauf config.php). Indiquez le chemin jusqu’au répertoire que vous aurez créé et qui contiendra votre script et son chemin d’accès par-rapport à la racine de Moodle. P.ex. définir 'htdocs/customscripts/course/view.php' pour remplacer le script 'htdocs/course/view.php'. Cela permet d’adapter un script sans toucher au script original et sans passer par la technique du thème enfant
debugusersStringVous pouvez spécifier une liste d’ID utilisateur séparés par des virgules, pour qui s’affichent toujours les messages de débogage
disablemycoursesBinaryEmpêche l’affichage de la page Mes cours quand un étudiant se connecte
disableupdatenotificationsBinaryUtilisez l’indicateur suivant pour désactiver complètement les notifications de mise à jour disponibles et masquez-les de l’interface utilisateur d’administration du serveur.
divertallemailstoStringDétournez tous les e-mails sortants vers cette adresse pour tester et déboguer les fonctionnalités d’emailing
divertallemailsexceptStringApporte une exception au précédent en définissant certaines adresses e-mail que vous souhaitez laisser passer pour les tests. Accepte une liste de regex séparés par des virgules
emailconnectionerrortoStringAdresse e-mail où envoyer des notifications de problèmes de connexion à la base de données
emailconnectionerrortoNumberSecondes pour que les fichiers restent dans les caches. Diminuez cela si vous êtes inquiet
à propos des étudiants recevant des versions obsolètes des fichiers téléchargés
filepermissionsSpecialIdentique à $CFG->directorypermissions mais pour les fichiers créés par Moodle
forced_plugin_settingsArrayS’il est possible de spécifier des paramètres d’administration ici, le fait est qu’ils ne peuvent plus être modifiés via les pages de paramètres d’administration standard. Les paramètres du plugin (un thème est également un plugin !) doivent être placé dans un tableau spécial, suivant la structure : $CFG->forced_plugin_settings = array('pluginname' => array('settingname' => 'value', 'secondsetting' => 'othervalue'),
'otherplugin' => array('mysetting' => 'myvalue', 'thesetting' => 'thevalue'));

Par exemple, pour changer la valeur brandcolor du thème Moove : $CFG->forced_plugin_settings = array('theme_moove' => array('brandcolor' => '#022B78'));
forcefirstname
forcelastname
StringUtilisé pour anonymiser les noms des étudiants. Si utilisé, tout utilisateur non-enseignant (minimum) verra toujours ces noms pour tous autres étudiants
httpswwwrootStringwwwroot pour les pages SSL. Utilisé dans le clustering de Moodle
includeuserpasswordsinbackupBinaryAutorisez l’inclusion de mots de passe utilisateur dans les fichiers de sauvegarde. Très dangereux
dans la mesure où il publie des hachages de mot de passe qui peuvent être non chiffrés si le fichier de sauvegarde est accessible au public. Utilisez-le uniquement si vous pouvez garantir que tous vos fichiers de sauvegarde restent uniquement disponibles en toute confidentialité et ne sont jamais partagés à partir de votre site / institution!
langlocalrootStringRépertoire alternatif pour dataroot/lang. Utilisé dans le clustering de Moodle
noemaileverBinaryLorsque vous travaillez avec des données de production sur des serveurs de test, permet d’empêcher l’envoi d’email et autre notifications
opensslcnfStringEmplacement du fichier openssl.cnf
preferlinesgraphsBinaryUtilise des lignes à la place de barre dans certains graphiques (p.ex. Journaux utilisateurs)
preventscheduledtaskchangesBinaryEmpêche le changement des tâches dans Server > Tâches programmées
reverseproxyBinaryActiver lors de la configuration de configurations avancées d’équilibrage de charge de proxy inverse,
il peut également être nécessaire de l’activer lors de l’utilisation de la redirection de port
showcrondebuggingBinaryForcer le débogage au niveau du développeur et ajouter des informations de débogage à la sortie de cron
showcronsqlBinaryAjouter des requêtes SQL à la sortie de cron, juste avant leur exécution
skiplangupgradeBinaryEmpêche la mise-à-jour automatique des paquetage de langue
sslproxyBinaryActivez cette option lors de l’utilisation d’une appliance SSL externe pour des raisons de performances. Veuillez noter que le site peut être accessible via http: ou https:, mais pas les deux !
supportuseridNumberDéfinit le destinataire des mails adressés au Support
themedirStringIl est possible d’ajouter un répertoire de thèmes supplémentaires stocké en dehors de $CFG->dirroot. Ce répertoire local n’a pas besoin d’être accessible depuis Internet
themedesignermodeBinaryEmpêche la mise en cache du thème
tracksessionipBinarySi ce paramètre est défini sur true, Moodle suivra l’adresse IP du utilisateur actuel pour s’assurer qu’il n’a pas changé au cours d’une session.  Dans le cas contraire, les pages ne sont plus affichées. Ceci empêchera la possibilité que les sessions soient détournées via XSS, mais il engendrer des dysfonctionnements pour les utilisateurs qui utilisent des proxys qui changent tout le temps
trashdirStringEmplacement alternatif pour dirroot/trashdir
upgraderunningBinaryPrétend qu’une mise à jour de Moodle est en cours
upgradeshowsqlBinaryAffiche les requêtes SQL pendant la mise à niveau.
Veuillez noter que ce paramètre peut produire une très longue page de mise à niveau sur les grands sites
usezipbackupsBinaryUtilise la compression ZIP à la place de TGZ pour les sauvegardes

Conclusion

Les paramètres du config.php permettent à l’administrateur de prendre la main sur certaines fonctionnalités de Moodle, qui ne sont pas accessibles depuis l’interface d’administration et qui peuvent rendre de grand services !

N’hésitez pas non plus à me contacter si vous avez des questions ou des commentaires sur cet article. Vous pouvez aussi poster vos questions sur notre groupe FaceBook francophone d’entraide Moodle.