Bug #61822 [Ver]: asXML($filename) url-decodes $filename
Edit report at https://bugs.php.net/bug.php?id=61822&edit=1
ID: 61822
Updated by: cmb@php.net
Reported by: Aldo at WebVyz dot com
Summary: asXML($filename) url-decodes $filename
Status: Verified
Type: Bug
-Package: SimpleXML related
+Package: *XML functions
Operating System: Linux
PHP Version: *
Block user comment: N
Private report: N
New Comment:
This is a general issue with our libxml2 bindings; for instance,
DOMDocument::saveHTMLFile() shows the same behavior:
<?php
$filename = 'dir1%2Fdir2/result.xml';
mkdir(dirname($filename));
$doc = new DOMDocument();
$doc->saveHTMLFile($filename);
?>
Warning: DOMDocument::saveHTMLFile(dir1/dir2/result.xml): failed to open stream: No such file or
directory
Previous Comments:
------------------------------------------------------------------------
[2012-04-23 02:16:46] Aldo at WebVyz dot com
Description:
------------
I was saving a SimpleXML object and kept getting errors that the file could not be written. Upon
further examination, I discovered that the directory containg an url-encoded slash (%2F) and while
the directory existed as an encoded string (e.g. 'dir1%2Fdir2/file.xml') asXML was
explicitly unencoding it and attempting to write to a different directory (which does not exist,
e.g. 'dir1/dir2.xml'). No amounts of double-encoding the filename succeeded in creating
the file successfully (same error) so I had to resort to
file_put_contents("{$dirname}/file.xml", $sXML->saveXML());
Test script:
---------------
$sXML = new SimpleXMLElement('<result />');
$filename = 'dir1%2Fdir2/result.xml';
mkdir(dirname($filename));
file_put_contents($filename, $sXML->asXML()); // works as expected
$sXML->asXML($filename); // fails; no such file/directory
Expected result:
----------------
Filename arguments given to asXML should be accepted without url-decoding
Actual result:
--------------
filenames are being url-decoded, which is not what I want or expect
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=61822&edit=1
Thread (3 messages)