From: Wez Furlong

> > You'll probably want to check if the path is a URI or local path first;
> the
> > streams code checks for :// to make this decision.

I loaded the soap extension and now run into an issue (though streams now
work in dom without having to touch it).
xmlRegisterInputCallbacks is in the global libxml space, so streams are
automatically supported in all libxml based extensions upon the soap MINIT.

When a file:// uri is passed in, you end up with an E_NOTICE as the streams
code issues a php_error_docref that the stream cannot be found. Although,
libxml will continue on matching against its default handlers which
successfully finds the file:// handler. As libxml converts all local
filepaths to file uris, this notice is generated with all external
referenced files within the document as well. Anyway that the errors can be
surpressed as libxml already handles the return code?

It would be nice if that block of code could be ripped out of soap and put
into a some libxml module which php would load on startup if libxml were
defined, so that streams would be included by default for all libxml
extensions. This module would then handle any global functionality needed in
startup/shutdown rather than the individual extensions trying to deal with
them.Something like this would also have prevented the issue with 2.5.8 and
the parser cleanup.

Now about the path resolution. Do you know if:
#ifdef VIRTUAL_DIR
    virtual_filepath_ex(source, &resolved_path, NULL TSRMLS_CC);
#else
    resolved_path = source;
#endif
is the correct way to resolve the paths, which could be anything like:
file:///../xmltest.xml
./xmltest.xml
/www/xmltest.xml
E:\xmltest.xml
file:///E:\xmltest.xml

or is there anything more or different that needs to be done to insure that
relative paths are expanded?

Thanks,

Rob

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to