在我的PHP项目中,我将noscript标记放在head标记中,如下所示。
<!DOCTYPE html>
<head>
<noscript></noscript>
</head>
<body>
</body>
</html>
这是php脚本获取和呈现的模板文件。
在PHP脚本像下面..
$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();
在本地主机中,它按原样显示。这样就可以了
但是,当我将此代码推送到服务器上并在浏览器上看到此页面时,noscript标记将移入body标记,如下所示。
<html>
<head></head>
<body>
<noscript></noscript>
</body>
</html>
您猜为什么会导致这种情况吗?
下面是有关我们服务器环境的详细信息。尽管我不认为这会引起问题,但还是存在一些差异。
【环境】
本地-Mac上的
XAMPP
-Apache / 2.4.18(Unix)PHP / 5.6.20
服务器
-Apache / 2.2.15(Unix)PHP / 5.6.15
=======================================
我也像下面的代码一样进行了测试。
echo <<< EOM
<!DOCTYPE html>
<head>
<noscript></noscript>
</head>
<body>
</body>
</html>
EOM;
它适用于两种环境。因此DOMDocument可能是罪魁祸首。我不知道...但是由于我们的框架,我无法使用此代码。所以我仍然必须搜索问题。
============================================
这些是阿帕奇服务器上的模块。
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)
我自己找到了答案。在我的服务器上,libxml版本是2.7.6。
在我的本地主机中,libxml版本是2.8.0。
根据此更新日志,
直到2.8.0,存在一个bug,HTML parser error with <noscript> in the <head>
并且此错误已在2.8.0版本中修复。
所以我将服务器上的libxml升级到2.8.0,从而解决了该问题!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句