2015-08-04 32 views
8

XMLWriter kullanarak oluşturduğum bir XML beslemem var. PHP 5.6 vagrant kutusunun içinde kusursuz bir şekilde çalışıyor. Kaynağı görüntülediğinizde varsaPHP xmlwriter belgesinde satır sonları

This page contains the following errors: 

error on line 3 at column 6: XML declaration allowed only at the start of the document 

Bu gibi görünüyor:

source

nasılsa eklenen birkaç çizgiler vardır canlı sunucuda, feed PHP 5.4 çalıştıran bir mesajla işlemek için başarısız XML belgesine Sunucular arasındaki tek fark PHP versiyonudur (bildiğim kadarıyla). bu nasıl aşmanın

$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')); 

Herhangi bir fikir:

İşte XMLWriter kodunun ilk birkaç satır var? PHP 5.4 den 5.6

+2

Gönderdiğiniz koddan değil :) - Ve iki sunucu arasındaki farklar için ini-settings karşılaştırması, örneğin çıktı arabellekleme, dosyaları önceden ekle vb. ? – hakre

+0

Oluşturduğunuz XML dosyaları çok büyük değilse, çıktıyı her zaman bir dizeye ekleyebilir ve diske kaydetmeden önce() yeniden düzenleyebilirsiniz. – GordonM

cevap

11

Oldukça birkaç değişiklik ... libxml yalnız değişiklikleri izin ...

ilk şey kullanılırsa <?php etiketi açmadan önce veya kapanış etiketinden sonra hiçbir boşluk olduğundan emin olun besbelli .

Yeni satırların ne zaman eklendiğini belirleyebilirseniz (yeni satırlar olduğunu varsayarsanız ... onaltılık görüntüleyici gibi bir şey kullandınız mı?) Yardımcı olur. Geçici bir konuma yazmayı deneyin - Bu sayfa sunulurken veya xmlWriter çıktığında bu olup olmadığını belirlemek istediğinizde. akla gelen

Şeyler ...

  • Belki indetString ne olması gerektiği konusunda açık olun. $xml->setIndentString(" ");

  • Varsayılan kodlama ...? Belki o seti almayı dene. Xml etiketinin açılması beklenirdi ... encoding="UTF-8". startDocument('1.0', 'utf-8');'u kullanın ve muhtemelen üstbilgi şu şekilde gönderilmelidir: header('Content-Type: application/xml; charset=UTF-8');. default_charset UTF-8'iniz var mı?

  • İki ortam arasındaki diğer farklılıklar nelerdir? Gibi şeyler short_open_tag vb

    • LIBXML_HTML_NOIMPLIED? 5.4 civarında mı değişti?

Çözüm:

  • çıktı akışına yazmaya başlamadan önce bir çağrı ob_clean deneyin.

  • trim'u kullanın.

  • 5 yaşında olmak isteyen sunucuyu yükseltin.4 bu günler :)

+0

Denenen bir HER ŞEY! Ama basit 'ob_clean()' bir mucize yaptı! Teşekkür ederim. – Daria

1

Sorununuz, Başlığın ('İçerik türü: metin/xml') yerleşimi;

() çağrısı başlığındaki önce gelir bu deneyin ve emin HİÇBİRŞEY yapmak:

<?php 
header('Content-type: text/xml'); 

... 

?> 

Bunu size yardımcı olabilecek tahmin!

İlgili konular