Moodle 3.9.7+ et open_basedir ?

Moodle 3.9.7+ et open_basedir ?

par Gaël Mifsud,
Nombre de réponses : 5

Bonjour,

Nous avons passé nos Moodles en version LTS 3.9.7+ (la 3.9.8 est sortie trop tard, on verra ensuite).

Depuis, nous constatons cet étrange Warning dans nos logs :

Got error 'PHP message: PHP Warning:  is_readable(): open_basedir restriction in effect.
File(/db/renamedclasses.php) is not within the allowed path(s):
(/nos_répertoires_autorisés/dont/celui_de_moodle/et/le_moodledata/)
in /var/www/moodle/htdocs/lib/classes/component.php on line 1206

Lorsque nous ajoutons un echo dans la classe concernée, nous constatons que pour certains plugins, la variable $fulldir est renseignée, mais que pour d'autres (beaucoup d'autres !), il est vide, ce qui fait croire à Moodle qu'il a besoin d'accéder à un dossier à la racine du serveur ( /db/...)

Nous n'avons pas fouillé plus loin (comment est générée cette variable (BDD, fichier de conf des plugins), etc), nous préférons demander auparavant si vous rencontrez le même warning.
Nous avons réglé le niveau de débug à "minimal" dans Moodle et pourtant cela suffit à l'afficher dans les logs rien qu'en allant sur la page des notifications (/admin/index.php)

Merci d'avance de vous pencher sur le problème car même si nous n'en mesurons pas l'importance pour le moment, un fichier renamedclasses.php pose questions.

Moyenne des évaluations  -
En réponse à Gaël Mifsud

Re: Moodle 3.9.7+ et open_basedir ?

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour Gaël,
Pourrais-tu aller dans "Administration du site > Serveur > Info PHP" et rechercher la valeur que tu as pour "open_basedir" ?
Personnellement, j'ai une valeur à "no value" et cela ne semble pas nuire à la sécurité de mes serveurs. Plus d'infos : https://www.php.net/manual/fr/ini.core.php#ini.open-basedir

Bien à toi,
Patrick
En réponse à Patrick Lemaire

Re: Moodle 3.9.7+ et open_basedir ?

par Gaël Mifsud,
Bonjour Patrick et merci de ta réponse.

Nous utilisons open_basedir pour limiter l'accès des scripts de Moodle à certains dossiers spécifiquement définis (le dossier de Moodle, le moodledata, un dossier pour la sauvegarde automatique des mbz, etc).
C'est, en effet, pour nous, inacceptable que Moodle accède à la totalité du serveur.

Et ça marche en général à partir du moment où l'on définit les bons chemins dans la variable open_basedir.
On a l'impression que là, par contre, il semble y avoir des modules qui ne renvoient pas correctement leurs chemins et provoquent une tentative d'accès à la racine du serveur (dans un dossier /db/ inexistant, certes).

Nous pourrions créer un dossier /db/ vide à ladite racine, mais la fonction renverrai toujours une erreur pour les modules concernés.
Je n'en donne pas la liste car, le echo avait renvoyé celle des modules pour lesquels il n'y a pas de problème, mais lorsqu'il y en a, on ne sait pas de quel module il s'agit.
En effet, puisque la variable $fulldir est vide, on n'a donc pas le nom du module qui se trouve dans le chemin. triste

Je précise que cela nous arrive sur au moins deux moodles en 3.9 ; je pourrai vérifier les autres à l'occasion.

Je devrais peut-être vérifier sur le bugtracker si ça a été remonté ?
En réponse à Gaël Mifsud

Re: Moodle 3.9.7+ et open_basedir ?

par Nicolas Martignoni,
Avatar Développeurs Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

> Je devrais peut-être vérifier sur le bugtracker si ça a été remonté ?

Oui, je pense que c'est une bonne idée.

En réponse à Gaël Mifsud

Re: Moodle 3.9.7+ et open_basedir ?

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
C'est étrange parce que si des modules appelaient un fichier à la racine, tu aurais des erreurs plus sévères du style « PHP - Failed to open stream : No such file or directory » ?
En réponse à Patrick Lemaire

Re: Moodle 3.9.7+ et open_basedir ?

par Gaël Mifsud,
Nicolas> rien dans le bugtracker.
Mais, je viens de vérifier avec un Moodle 3.9 sans plugin, et là il n'y a pas de message d'erreur.
Je recommencerai mes recherches lundi pour savoir d'où vient le problème chez nous car cela touche plusieurs de nos moodles.

Patrick> je pense que c'est justement une fonction de vérification de l'existence du fichier qui renvoie le warning, d'où le fait qu'il n'y a pas de problème d'accès, car le problème a été intercepté avant.
Je suis le premier à trouver des défauts à Moodle, mais je trouve le code plutôt bien écrit en général, en voilà une preuve parmi d'autres : pas d'accès à un fichier sans avoir vérifié son existence avant. ^_^

Merci pour vos réponses. Je continue mes vérifications la semaine prochaine.