Bonjour,
J'ai tout réinstallé sur un autre ordinateur, au cas où mon serveur serait en cause.
Le problème est le même, je ne peux ouvrir les fichiers de personnalisation du paquetage de langue.
Mario
Re: Personnalisation du paquetage de langue - Échec en partie résolu
Bonjour,
J’ai enfin découvert l’origine du problème de personnalisation du
paquetage de langue dans Moodle : zend_extension=opcache dans le fichier
php.ini. En désactivant cette option, je peux maintenant télécharger les
fichiers de personnalisation.
Cependant, cette option est censée améliorer les performances de php, alors
comment l’utiliser correctement? Si je l’active en haussant la mémoire de l’extension
opcache.memory_consumption=128 (=1000), le problème de personnalisation réapparaît.
Désactiver l’option zend_extension=opcache règle le problème mais affiche le
message d’erreur suivant dans Moodle.
Voici les extensions activées dans php.ini : opcache.enable=1,
opcache.memory.consumption=128, opcache.max_accelerated_files=10000,
opcache.use_cwd=1, opcache.validate_timestamps=1, opcache.revalidate_freq=60,
opcache.save_comments=1, opcache.enable_file_override=0.
Pourquoi l’option zend_extension=opcache bloque-t-elle la
personnalisation du paquetage de langue? Comment régler ce problème? Sinon, puis-je me passer de cette option sans
compromettre le fonctionnement de Moodle?
Mario
Re: Personnalisation du paquetage de langue - Échec en partie résolu
A minima, tu as trouvé une explication, et un moyen de fonctionner. Même si je trouve ça étonnant, parce que quasiment tous les sites Moodle ont cette extension activée.
Si tu es le seul à devoir gérer les personnalisations de langue, tu peux ne désactiver opcache que lorsque tu as besoin d'effectuer ce genre de tâche, et le laisser activé le reste du temps.
Tu vas perdre un peu en performance pendant que ce sera désactivé, mais cela ne devrait pas empêcher le fonctionnement. Il faut juste éviter de le faire aux périodes d'activité les plus chargées.
Re: Personnalisation du paquetage de langue - Échec en partie résolu
Je doute de pouvoir vous aider efficacement, mais chez moi je vérifie toujours que tous les paramètres Admin/Serveur/Environnement soient OK.
Donc ce paramètre opcache de php.
Et je n'ai aucun fichier php.ini dans l'arborescence Moodle.
Le seul existant chez moi est très ancien et est situé exactement à la racine de l'arborescence de mon domaine d'hébergement.
Je n'y ai donc jamais touché, malgré les nombreuses installations de logiciels divers ultérieures.
Le problème est sans doute du côté serveur, et non Moodle ?
Daniel
Re: Personnalisation du paquetage de langue - Échec en partie résolu
Re: Personnalisation du paquetage de langue - Échec en partie résolu
Bonjour,
Séverin, je pourrais effectivement désactiver zend_extension=opcache lorsque
j’aurai à personnaliser le paquetage de langue, ce qui ne devrais pas arriver très
souvent.
Daniel, croyant au début la même chose, j’ai réinstallé les programmes sur
trois ordinateurs différents, en variant même les chemins d’accès deux fois sur
trois, au cas où. Le problème est le même. Pour le moment, je croirais plutôt
que le problème est du côté de l’installateur! L’installation est pourtant de
base, c’est-à-dire sans configurer quoi que ce soit dans Moodle… Toutes les installations fonctionnent bien hormis ce problème.
Ordinateur 1, le serveur
c:/serveur/Apache24, mariadb et php8. Moodle est installé dans /Apache24/htdocs.
c:/serveurdata/mariadb et moodledata.
Ordinateurs 2 et 3
e:/serveur/Apache24, mariadb, moodle et php8.
e:/data/mariadb
et moodledata.
Patrick, je ne vois rien d’anormal pour l’instant dans la base de
données.
Bref, je poursuis l’installation de Moodle tel que prévu mais je reste
vigilant concernant ce problème pour le moins bizarre. Maintenant que j’y suis
arrivé, je pourrai bientôt personnaliser la mise en page de la fenêtre d’enregistrement
en ouvrant la chaîne emailresetconfirmsent, comme l’avait suggéré
Christian Bocquet au début (le problème étant survenu à ce moment-là...). Pour
l’instant, je dois tout réinstaller proprement.
Merci de votre aide.
Mario
Re: Personnalisation du paquetage de langue - Échec en partie résolu
Bonjour,
Curieusement, l’option Zend_extension est activée sur Xampp de ma clé
usb et ne bloque pas la personnalisation du paquetage de langue.
J’ai remplacé le fichier php.ini de mon serveur par celui de Xampp, y ai
modifié les chemins d’accès et l’extension php_gd2.dll pour php_gd.dll, redémarré
Apache et relancé la personnalisation du paquetage de langue. Dans Moodle, tout
fonctionne normalement à l’exception de la personnalisation du paquetage de
langue. Il suffit encore une fois de modifier opcache.enable=1 pour opcache.enable=0 dans
le fichier php.ini pour télécharger les fichiers de personnalisation.
En résumé, j’utilise sur mon serveur le même fichier php.ini que celui de Xampp
sur ma clé usb. Si opcache bloque l’opération sur mon serveur mais pas sur la
clé usb, la cause du problème se situe probablement ailleurs. Opcache interagirait
alors avec un ou d’autres paramètres qui eux seraient mal configurés?
Mario
Re: Personnalisation du paquetage de langue - Échec en partie résolu
Cela semble en effet un problème de configuration sur le serveur, vraisemblablement de Apache et/ou PHP. Je suggère d'étudier les différences de configuration de Apache et PHP entre le serveur et XAMPP.
Re: Personnalisation du paquetage de langue - Échec en partie résolu
Dans le fichier config.php de Moodle, bien peu de choses peuvent causer cette erreur, excepté peut-être utf8mb4_general_ci? Je l’ai modifié pour utf8mb4_unicode_ci comme il est indiqué dans le fichier config.php de Xampp, aucun effet sur le paquetage de langue.
En ce qui concerne les fichiers httpd.conf et php.ini, je les ai
remplacés sur mon serveur par ceux de Xampp en modifiant les chemins d’accès et
tous les paramètres une section à la fois, aucun effet sur le paquetage de
langue.
Dans tous les tests effectués jusqu’à maintenant, il n’y a que l’extension
opcache qui bloque/débloque le paquetage de langue. En ce qui me concerne, ça
reste l’énigme du siècle… Ma crainte est la suivante : si cette extension
bloque aujourd’hui le paquetage de langue de manière aussi bizarre, qu’elle autre
option bloquera-t-elle mystérieusement plus tard que je n’ai pas encore utilisée?
Mario
Re: Personnalisation du paquetage de langue - Échec en partie résolu
Dans Xampp, que dit le fichier error.log d'Apache ?
Patrick
Re: Personnalisation du paquetage de langue - Échec en partie résolu
Bonjour Patrick,
En effet, je ne crois pas non plus que l’extension soit en cause. Il doit bien y avoir pourtant un lien indirect entre opcache et le paquetage de langue puisque désactiver le premier règle le problème du deuxième. Mais force est de constater que la cause se trouve ailleurs.
J’installe des programmes récents compatibles - les mêmes sans doute que
des millions de personnes -, j’active les extensions recommandées sur de
nombreux sites, j’effectue des installations sur des ordinateurs différents en
variant les chemins d’accès, je modifie des paramètres dans les fichiers de
configuration principaux, rien à faire. Si les programmes ne sont pas en cause,
il reste bien sûr le serveur et l’installateur…
J’ai envoyé le 19 mars dernier le contenu des fichiers access.log sur
mon serveur et sur Xampp. Il manque un POST et un GET dans le fichier du
serveur, ce qui confirme un problème au niveau des requêtes.
Dernières lignes du fichier access.log de Xampp,
absentes du fichier access.log du serveur :
::1 - - [18/Mar/2023:11:20:00 -0400] "POST
/admin/tool/customlang/index.php HTTP/1.1" 200 192146
"http://localhost/admin/tool/customlang/index.php?lng=fr_ca"
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/111.0.0.0 Safari/537.36"
::1 - - [18/Mar/2023:11:20:12 -0400] "GET
/admin/tool/customlang/edit.php?lng=fr_ca HTTP/1.1" 200 188916
"http://localhost/admin/tool/customlang/index.php" "Mozilla/5.0
(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/111.0.0.0 Safari/537.36"
Le fichier error.log ressemble à ce qui suit et ne m’aide pas davantage. J’ai oublié à quoi était reliées les nombreuses lignes VirtualProtect… D’après mes recherches l’an dernier, ces lignes ne semblaient pas causer de problèmes particuliers à mon installation. Je me suis peut-être trompé et je vais reprendre mes recherches à propos de ce message.
Lignes du fichier error.log du serveur :
Il me reste peut-être à utiliser DevTools de Chrome, un outil que je ne
maîtrise pas mais qui pourrait m’aider à comprendre ce qui se passe lors de la
personnalisation du paquetage de langue. Par exemple, examiner des bouts de
code comme celui-ci pourrait m’indiquer des pistes à suivre.
Mario
Re: Personnalisation du paquetage de langue - Échec en partie résolu
; To avoid errors VirtualProtect() failed [87] Incorrect parameter
; in apache_error.log
opcache.jit=off
Sources : https://www.apachelounge.com/viewtopic.php?p=39637#39637Re: Personnalisation du paquetage de langue - Échec en partie résolu
Bonjour Patrick,
Je crois avoir résolu deux problèmes : le message d’erreur VirtualProtect du fichier error.log et le paquetage de langue. Je dis bien je crois car le fait de trouver une solution à ces problèmes ne signifie pas que je les ai corrigés adéquatement. Autrement dit, une solution qui règle un problème n’est pas nécessairement la bonne solution.
Concernant le message d’erreur “VirtualProtect() failed [87] The
parameter is incorrect” affiché dans le fichier error.log, il semble relié au
paramètre opcache.jit. JIT est un compilateur qui fait partie d’opcache et qui
améliorerait les performances de PHP (jit = just in time). Dans php_info, JIT =
On et opcache.jit_buffer_size = 0 par défaut. Selon certains, il y aurait à
première vue un genre de conflit entre ces deux paramètres, réglés à l’opposé
l’un de l’autre, d’où le message d’erreur. Selon le site php.watch, JIT est
activé par défaut mais pas déclenché (turned off).
Certains suggèrent de désactiver opcache.jit ou auto_globals_jit dans php.ini (= Off). D’autres suggèrent d’ajouter une valeur à opcache.jit_buffer_size, 8 ou 16 au lieu de 0. (Le site php.watch suggère 50-100% de la valeur d’opcache shared memory, 256M dans mon cas : j’ai choisi 50 % de cette valeur, donc 128M). Je préfère ne pas désactiver JIT pour la même raison qui consistait à désactiver opcache pour régler le problème de paquetage : désactiver ces paramètres semble régler le problème mais ça réduit aussi la performance de PHP. Sans compter le fait que ça ne permet pas de comprendre ni de s’attaquer à la source du problème, la cause initiale.
Bref, j’ai simplement ajouté opcache.jit_buffer_size = 128M à la fin du
fichier php.ini et le message d’erreur VirtualProtect a disparu.
Concernant le paquetage de langue, j’ai remarqué la ligne suivante
dans le fichier error.log :
Parent: child process 7348 exited with status 3221225725 -- Restarting. Croyant qu’il s’agissait d’une ligne normale, je n’y ai jamais prêté attention avant aujourd’hui. Il s’agirait d’un message relié à la taille - ou quantité de mémoire - de la pile de Windows (pile = unité de mémoire destinée à stocker des données temporaires). Si je comprends bien, le téléchargement des variables du paquetage de langue fait déborder la pile trop petite de Windows et Apache bloque le processus. La pile de Linux serait plus grande que celle de Windows, 8 Mo pour Linux contre 1 Mo pour Windows.
Pour augmenter la taille de la pile de Windows, j’ai ajouté le paramètre
ThreadStackSize à la fin de httpd.conf et testé différentes valeurs : 2 Mo,
4 Mo et 8 Mo. Je retiens la valeur 2 Mo pour l’instant. Je peux enfin personnaliser
le paquetage de langue et le message d’erreur a disparu du fichier error.log.
<IfModule
mpm_winnt_module>
ThreadStackSize 2097152
</IfModule>
Fichier error.log avant la correction :
[Tue
Apr 11 01:07:21.290821 2023] [mpm_winnt:notice] [pid 1064:tid 428] AH00418:
Parent: Created child process 7348
[Tue Apr 11 01:07:21.540777 2023] [mpm_winnt:notice] [pid 7348:tid 420] AH00354: Child: Starting 64 worker threads.
[Tue Apr 11 01:07:34.550234 2023] [mpm_winnt:notice] [pid 1064:tid 428] AH00428: Parent: child process 7348 exited with status 3221225725 -- Restarting.
Fichier error.log après la correction (ajout du module mpm_winnt) :
[Tue
Apr 11 02:04:16.577401 2023] [mpm_winnt:notice] [pid 3500:tid 388] AH00418:
Parent: Created child process 192
[Tue Apr 11 02:04:17.558245 2023] [mpm_winnt:notice] [pid 192:tid 416] AH00354: Child: Starting 64 worker threads.
[Tue Apr 11 02:04:18.558813 2023] [mpm_winnt:notice] [pid 260:tid 416] AH00364: Child: All worker threads have exited.
https://httpd.apache.org/docs/2.4/mod/mpm_common.html
Je ne sais pas si ce sont les meilleures solutions mais elles fonctionnent. Je vais pouvoir réinstaller le serveur et poursuivre la configuration de Moodle.
Merci de votre aide.
Mario
Re: Personnalisation du paquetage de langue - Échec en partie résolu
À suivre...
Patrick