use*_*289 8 php xml php-5.4 php-5.6
我有一个我用它创建的XML feed XMLWriter.它在PHP 5.6流浪盒中完美无缺地工作.在实时服务器上运行PHP 5.4,无法使用消息呈现源:
This page contains the following errors:
error on line 3 at column 6: XML declaration allowed only at the start of the document
Run Code Online (Sandbox Code Playgroud)
如果您查看源代码,它看起来像这样:
不知何故,XML文档中添加了几行.服务器之间的唯一区别是PHP版本(据我所知).
这是XMLWriter代码的前几行:
$xml = new XMLWriter();
$xml->openURI('php://output');
$xml->startDocument("1.0");
$xml->setIndent(true);
$xml->startElement("propertyList");
$xml->writeAttribute('date', date('Y-m-d-H:i:s'));
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?
fic*_*scr 11
从PHP 5.4到5.6的相当多的变化......更不用说libxml中的变化......
第一件事显然是确保在打开<?php标签之前或在使用结束标签之后没有空格.
如果您可以确定何时引入新行(假设它们是新行...您是否使用了十六进制查看器之类的内容?),这将有所帮助.尝试写入临时位置 - 想要确定在提供页面时还是在输出xmlWriter时是否发生这种情况.
想到的事情......
也许要明确indetString应该是什么. $xml->setIndentString(" ");
默认编码......?也许试着去做那套.期望在打开XML标记...... encoding="UTF-8".使用startDocument('1.0', 'utf-8');,可能应该发送标题如:header('Content-Type: application/xml; charset=UTF-8');.你的default_charsetUTF-8?
这两种环境还有什么其他区别?像short_open_tag等等的东西
LIBXML_HTML_NOIMPLIED?改变了5.4左右?解决方法:
ob_clean在开始写入输出流之前尝试调用.
使用trim.
升级服务器,这些天想成为5.4的服务器:)
| 归档时间: |
|
| 查看次数: |
898 次 |
| 最近记录: |