Hi! Just stumbled upon the issue described in
https://bugs.php.net/bug.php?id=39771 during a Windows -> Linux migration. The windows binaries for php 5.3.10 and 5.4 got no problems executing the following: <?php $doc = new DOMDocument(); $doc->loadHTML( '<html><body>Test</body></html>' ); $body = $doc->getElementsByTagName( 'body' )->item( 0 ); echo $doc->saveHTML( $body ); If I compile 5.3.10 myself (RHEL 5.7), I get the very same behaviour as described in the last comment of bug 39771: "PHP Warning: DOMDocument::saveHTML() expects exactly 0 parameters, 1 given" A quick look at the sources of 5.3.10 show, that there is indeed a optional node parameter: ext/dom/document.c:2296: if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|O!", &id, dom_document_class_entry, &nodep, dom_node_class_entry) == FAILURE) { return; } Yet, the arginfo does not reflect this, e.g. ext/dom/document.c:158: ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_document_savehtml, 0, 0, 0) ZEND_END_ARG_INFO(); should read ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_document_savehtml, 0, 0, 0) ZEND_ARG_OBJ_INFO(0, node, DOMNode, 1) ZEND_END_ARG_INFO(); If I allow for passing that optional parameter by adjusting the arginfo, the php snippet posted above works just fine. The documentation of DOMDocument::saveHTML is in sync with the implementation of dom_document_save_html, it seems that just the parameter checking is wrong. It is very confusing, that the provided windows binaries work, but the compiled-it-myself php on linux does not. Any insight on the correctness of this (documented) feature as well as the windows / linux discrepancy is very appreciated. Sincerely, Nico -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php