在我的 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();
在localhost中,它显示为原样。所以没关系。
但是,当我将此代码推送到服务器时,我在浏览器上看到此页面, 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可能是罪魁祸首..?我不知道... 但我无法使用此代码..因为我们的框架。 所以我仍然要搜索问题..
============================================== <登记/> 这些是我们服务器上的apache模块。
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)
答案 0 :(得分:2)
HTML parser error with <noscript> in the <head>
的错误
并且在版本2.8.0中修复了此错误
所以我将服务器上的libxml升级到2.8.0,这解决了问题!