L'une de ces incohérences, c'est le contenu de la variable $_SERVER. Je savais qu'il y avait quelques différences entre l'utilisation de PHP avec Apache, et l'utilisation de PHP avec IIS, mais là, j'ai découvert une vérité beaucoup plus débile.

Vous voulez par exemple récupérer le PATH_INFO (la partie du chemin qui se trouve derrière le nom du script). Selon la plateforme ou la manière d'utiliser PHP (en module apache, cgi ou suphp entre autres..), pour une même url, vous n'aurez jamais la même valeur dans $_SERVER['PATH_INFO']. Et il en va de même pour $_SERVER['SCRIPT_NAME'], $_SERVER['SCRIPT_FILENAME'], $_SERVER['PHP_SELF'], ou encore $_SERVER['ORIG_PATH_INFO'], $_SERVER['ORIG_SCRIPT_NAME'] etc.. Ajoutez à cela que sur une même plateforme (en cgi ou suphp), ces valeurs changent aussi en fonction du paramètre de configuration cgi.fix_pathinfo et c'est l'horreur...

En clair, pour faire un script ayant besoin des valeurs se trouvant (en théorie) dans $_SERVER, et qui soit portable sur toutes les plateformes sans interventions de l'utilisateur, c'est quasiment impossible à faire. En fait, les informations dans $_SERVER sont pratiquement inutilisables. Une grosse connerie quoi. Une abération de plus dans PHP parmis tant d'autres. Même si les informations délivrées sont différentes d'un serveur à un autre, le moteur de PHP ne pourrait-il pas faire en sorte qu'on ait les informations attendues dans $_SERVER ? J'ai l'impression que les développeurs des connecteurs SAPI ne se sont pas mis d'accord sur une homogénéisation du contenu de $_SERVER (m'enfin vu l'organisation pourrie du dev du moteur PHP, ça ne m'étonne pas).

J'arrive toutefois dans Jelix à "deviner" dans quel variable de $_SERVER je peux récupérer les données dont j'ai besoin pour "calculer" le PATH_INFO, mais ce n'est pas un processus fiable à 100%, puisque je n'ai pas la possibilité d'avoir sur mes bécanes toutes les configurations et serveurs web possibles et imaginables. J'ai donc ajouté pour les cas "foireux" une solution de "secours", utilisée par d'autres frameworks, qui est d'avoir un paramètre dans la configuration de Jelix, où l'on peut indiquer le nom de la variable de $_SERVER dont jelix a besoin.

Autre incohérence trouvée : des changements de comportement, ou plutôt des bugs de regressions je dirais, dans la fonction filter_var. Il y a par exemple le flag FILTER_FLAG_SCHEME_REQUIRED qui n'est plus pris en compte dans la dernière version de PHP. Ce qui fait que des tests unitaires de Jelix passent avec certaines version de PHP, et pas avec d'autres. Donc je ne peux pas utiliser filter_var pour valider des urls et suis obligé de faire cette validation "à la main". Super :-/