If you're facing problems on Windows Servers running PHP 5.3 and newer, where this function quits with an "Unable to resolve file path" Error, here is a Workaround which isn't posted on the Bug site yet:
Add this before you use the openURI()-function:
<?php
touch($uri);
$uri = realpath($uri);
?>
This Bug appears in the following cases:
$xml->openURI('file.xml'); -> ok!
$xml->openURI('../file.xml'); -> ok!
$xml->openURI('xml/file.xml'); -> DON'T WORK!
$xml->openURI('../xml/file.xml'); -> DON'T WORK!
XMLWriter::openURI
xmlwriter_open_uri
(PHP 5 >= 5.1.2, PECL xmlwriter >= 0.1.0)
XMLWriter::openURI -- xmlwriter_open_uri — ソース URI を指定して新しい xmlwriter を作成する
説明
オブジェクト指向型
bool XMLWriter::openURI
( string
$uri
)手続き型
resource xmlwriter_open_uri
( string
$uri
)
uri を指定した新しい XMLWriter を作成します。
パラメータ
-
uri -
出力するリソースの URI。
返り値
オブジェクト指向型: 成功した場合に TRUE を、失敗した場合に FALSE を返します。
手続き型: 成功した場合に、その後の xmlwriter
関数で使用するための新しい xmlwriter リソース、
エラーの場合に FALSE を返します。
Lukas Knuth
07-May-2011 06:08
icepick dot pt at hotmail dot com
16-Mar-2009 10:13
I wanted to stream a XML file directly to the user and having him prompted to save it without displaying the content, but when using
<?php
$out =new XMLWriter();
$out->openURI('php://output');
?>
the user's browser was displaying the file contents instead of prompting the user with a filesave window.
To have the XML file stream saved directly to the user without being displayed by the browser, you shoud add:
<?php
header("Content-Type: text/html/force-download");
header("Content-Disposition: attachment; filename='file_name.xml'");
$out =new XMLWriter();
$out->openURI('php://output');
?>
This will prompt the user with a dialog box to save 'file_name.xml' on his disk, and will not display the content of the streamed XML.
yankee at ignorethis dot cipher DASH code dot de
19-Nov-2007 07:46
Want to write xml-data directly to the user instead of memory or file?
This will do:
<?php
$out =new XMLWriter();
$out->openURI('php://output');
?>
