Personnalisation du paquetage de langue - Échec

Re: Personnalisation du paquetage de langue - Échec

par Mario Bouchard,
Nombre de réponses : 14

Bonjour,
 
En guise de comparaison, je vous envoie les fichiers access.log de la clé usb et du serveur. La partie en italique indique ce qui manque dans le fichier du serveur, incluant la commande POST tel qu’indiqué par DevTools de Chrome.
 
Fichier access.log de la clé usb (installation xampp) :
 
::1 - - [18/Mar/2023:11:19:33 -0400] "POST /lib/ajax/service.php?sesskey=wDcPOgQEqO&info=block_recentlyaccesseditems_get_recent_items HTTP/1.1" 200 27 "http://localhost/my/" "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:19:36 -0400] "GET /admin/search.php HTTP/1.1" 200 232299 "http://localhost/my/" "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:19:48 -0400] "GET /admin/tool/customlang/index.php HTTP/1.1" 200 139816 "http://localhost/admin/search.php" "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:19:54 -0400] "GET /admin/tool/customlang/index.php?lng=fr_ca HTTP/1.1" 200 139624 "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"

::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"
 
 
Fichier access.log du serveur
 
192.168.0.116 - - [18/Mar/2023:11:22:21 -0400] "POST /moodle/lib/ajax/service.php?sesskey=rKwzUOp2ZZ&info=block_recentlyaccesseditems_get_recent_items HTTP/1.1" 200 27
192.168.0.116 - - [18/Mar/2023:11:22:22 -0400] "GET /moodle/admin/search.php HTTP/1.1" 200 235632
192.168.0.116 - - [18/Mar/2023:11:22:27 -0400] "GET /moodle/admin/tool/customlang/index.php HTTP/1.1" 200 140143
192.168.0.116 - - [18/Mar/2023:11:22:29 -0400] "GET /moodle/admin/tool/customlang/index.php?lng=en HTTP/1.1" 200 140054
 
Mario

En réponse à Mario Bouchard

Re: Personnalisation du paquetage de langue - Échec

par Mario Bouchard,

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

En réponse à Mario Bouchard

Re: Personnalisation du paquetage de langue - Échec en partie résolu

par Mario Bouchard,

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


Moyenne des évaluations Utile (4)
En réponse à Mario Bouchard

Re: Personnalisation du paquetage de langue - Échec en partie résolu

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour,

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.

De mon côté, les seuls éléments activés concernant OPcache sont : zend_extension=opcache, opcache.enable=1, opcache.memory_consumption=128, opcache.interned_strings_buffer=8, opcache.max_accelerated_files=4000, opcache.blacklist_filename=/etc/php.d/opcache*.blacklist, opcache.huge_code_pages=0

Séverin
En réponse à Mario Bouchard

Re: Personnalisation du paquetage de langue - Échec en partie résolu

par Daniel Méthot,
Avatar Moodleurs particulièrement utiles
Bonjour,
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
En réponse à Mario Bouchard

Re: Personnalisation du paquetage de langue - Échec en partie résolu

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Sans forcément apporter une réponse à cette situation, voici un fil de discussion qui rapporte un souci proche : https://moodle.org/mod/forum/discuss.php?d=436494
En réponse à Patrick Lemaire

Re: Personnalisation du paquetage de langue - Échec en partie résolu

par Mario Bouchard,

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


En réponse à Mario Bouchard

Re: Personnalisation du paquetage de langue - Échec en partie résolu

par Mario Bouchard,

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


En réponse à Mario Bouchard

Re: Personnalisation du paquetage de langue - Échec en partie résolu

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

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.

En réponse à Nicolas Martignoni

Re: Personnalisation du paquetage de langue - Échec en partie résolu

par Mario Bouchard,

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


En réponse à Mario Bouchard

Re: Personnalisation du paquetage de langue - Échec en partie résolu

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Ce qui est plutôt étonnant, c'est le peu de résonance d'une telle situation dans la communauté Moodle. Si l'extension était réellement en cause directe, tu ne serais pas le seul à le signaler. Il doit y avoir quelque chose d'autre … mais quoi ?!
Dans Xampp, que dit le fichier error.log d'Apache ?

Patrick
En réponse à Patrick Lemaire

Re: Personnalisation du paquetage de langue - Échec en partie résolu

par Mario Bouchard,

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

 


En réponse à Mario Bouchard

Re: Personnalisation du paquetage de langue - Échec en partie résolu

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
L'erreur VirtualProtect est liée à opcache sous Windows. Il faut ajouter une directive dans php.ini pour l'éviter :
; To avoid errors VirtualProtect() failed [87] Incorrect parameter
; in apache_error.log
opcache.jit=off
Sources : https://www.apachelounge.com/viewtopic.php?p=39637#39637

Ce n'est donc pas une piste intéressante. Pour le coup, je ne vois pas d'autres éléments à regarder 🤔
Moyenne des évaluations Utile (1)
En réponse à Patrick Lemaire

Re: Personnalisation du paquetage de langue - Échec en partie résolu

par Mario Bouchard,

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://php.watch/articles/jit-in-depth#:~:text=opcache.jit%3Dtracing,cannot%20be%20enabled%20run%2Dtime

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


Moyenne des évaluations Utile (2)
En réponse à Mario Bouchard

Re: Personnalisation du paquetage de langue - Échec en partie résolu

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
À première vue, je dirai que tu tiens là une très bonne piste !
Merci pour ton retour très explicite, incluant tes démarches. C'est très enrichissant pour tou·te·s celles et ceux qui lisent.

À suivre...
Patrick