pourquoi noscript se déplace-t-il dans la balise body au lieu de la balise head

Sur mon projet PHP , je mets le tag noscript dans la balise head, comme ci-dessous.

       

C’est un fichier modèle qu’un script php obtient et rend.

le script PHP est comme ci-dessous ..

 $file = file_get_contents( $templatePath ); $dom = new \DOMDocument(); $dom->preserveWhiteSpace = false; $dom->formatOutput = true; // not working $dom->encoding = 'UTF-8'; libxml_use_internal_errors( true ); $dom->loadHTML( mb_convert_encoding($file, 'HTML-ENTITIES', 'UTF-8') , LIBXML_NOERROR | LIBXML_NOWARNING ); libxml_clear_errors(); echo $dom->saveHtml(); 

dans localhost, il s’affiche tel quel. donc ça va.

Mais quand je pousse ce code sur mon serveur et que je vois cette page sur le navigateur, la balise noscript se déplace dans la balise body comme ci-dessous.

       

Tu devines pourquoi ça cause ??
Le détail de notre environnement de serveur est ci-dessous. Il y a quelques différences bien que je ne pense pas que cela cause le problème …

【Environnement】
Local
– XAMPP sur mon Mac
– Apache / 2.4.18 (Unix) PHP / 5.6.20

Serveur
– Apache / 2.2.15 (Unix) PHP / 5.6.15

========================================
et j’ai aussi testé comme ci-dessous le code.

 echo <<< EOM        EOM; 

cela fonctionne sur les deux environnements. alors DOMDocument peut être le coupable ..? Je ne sais pas … mais je ne peux pas utiliser ce code .. à cause de notre framework. donc je dois encore chercher le problème ..

==============================================
et ce sont des modules apache sur notre serveur.

 Loaded Modules: core_module (static) mpm_prefork_module (static) http_module (static) so_module (static) auth_basic_module (shared) auth_digest_module (shared) authn_file_module (shared) authn_alias_module (shared) authn_anon_module (shared) authn_dbm_module (shared) authn_default_module (shared) authz_host_module (shared) authz_user_module (shared) authz_owner_module (shared) authz_groupfile_module (shared) authz_dbm_module (shared) authz_default_module (shared) ldap_module (shared) authnz_ldap_module (shared) include_module (shared) log_config_module (shared) logio_module (shared) env_module (shared) ext_filter_module (shared) mime_magic_module (shared) expires_module (shared) deflate_module (shared) headers_module (shared) usertrack_module (shared) setenvif_module (shared) mime_module (shared) dav_module (shared) status_module (shared) autoindex_module (shared) info_module (shared) dav_fs_module (shared) vhost_alias_module (shared) negotiation_module (shared) dir_module (shared) actions_module (shared) speling_module (shared) userdir_module (shared) alias_module (shared) substitute_module (shared) rewrite_module (shared) proxy_module (shared) proxy_balancer_module (shared) proxy_ftp_module (shared) proxy_http_module (shared) proxy_ajp_module (shared) proxy_connect_module (shared) cache_module (shared) suexec_module (shared) disk_cache_module (shared) cgi_module (shared) version_module (shared) php5_module (shared) ssl_module (shared) 

J’ai trouvé la réponse moi-même. dans mon serveur, la version de libxml est 2.7.6 .
dans mon localhost, la version de libxml est 2.8.0 .
selon ce changelog ,
jusqu’à 2.8.0, il y avait le bogue de l’erreur d’ HTML parser error with
et ce bogue a été corrigé dans la version 2.8.0.
J’ai donc mis à jour libxml sur mon serveur vers la version 2.8.0, ce qui a résolu le problème!