XML_RPC
PHP implementation of the XML-RPC protocol
A PEAR-ified version of Useful Inc's XML-RPC for PHP.

It has support for HTTP/HTTPS transport, proxies and authentication.
ssb
Stig Bakken
stig@php.net lead
danielc
Daniel Convissor
danielc@php.net lead
1.5.5
2011-08-27
PHP License
stable
* Adjust is_a() usage due to change in PHP 5.3.7. * Fix error populating headers. Bug 18653.
xml
1.5.4
2010-07-03
stable
* Change ereg functions to preg due to deprecation (Request 17546 and then some.) * Fix bugs in XML_RPC_Dump error detection process. * Escape XML special characters in key names of struct elements. Bug 17368.
1.5.3
2010-01-14
stable
* Make licenses consistent. Bug 12575. * Fix serializedata() for non-sequentially indexed arrays. Bug 16780. * Show request information in debug mode. Request 8240. * Creating the payload before opening a socket connection. Request 11981.
1.5.2
2009-08-18
stable
* Change license in empty-value-struct.php from PHP 3.0 to 3.01.
1.5.1
2006-10-28
stable
* Turn passing payload through mb_convert_encoding() off by default. Use new XML_RPC_Message::setConvertPayloadEncoding() and XML_RPC_Server::setConvertPayloadEncoding() to turn it on. Bug 8632. * Have XML_RPC_Value::scalarval() return FALSE if value is not a scalar. Bug 8251.
1.5.0
2006-07-11
stable
No changes from 1.5.0RC2.

The primary change from 1.4.8 is improved multi-byte support. See the change log for complete information.
1.5.0RC2
2006-06-21
beta
* If PHP's mbstring extension is enabled, use mb_convert_encoding() to ensure the server payload matches the intended encoding.
1.5.0RC1
2006-06-16
beta
* Provide complete multi-byte string support for systems with the mbstring extension enabled. Bug 7837. * If PHP's mbstring extension is enabled, use mb_convert_encoding() to ensure the client payload matches the intended encoding. This is a better resolution of Bug 7376. * Turn off the default of automatically base64 encoding strings that can generate fatal errors in PHP's SAX parser. The automatic base64 encoding can be turned on via the new XML_RPC_Client::setAutoBase64() method. The auto-encoding is a workaround for systems that don't have PHP's mbstring extension available. (The automatic base64 encoding was added in the prior release, 1.4.8, and caused problems for users who don't control the receiving end of the requests.) Bug 7837.
1.4.8
2006-04-16
stable
* Characters other than alpha-numeric, punctuation, SP, TAB, LF and CR break the XML parser, encode value via Base 64. Bug 7376.
1.4.7
2006-04-10
stable
* Add include_once for PEAR if need to load xml extension. Bug 7358. * Add dependency for xml extension in package file. Bug 7358.
1.4.6
2006-04-07
stable
* Add XML_RPC_Message::$remove_extra_lines property. Defaults to true. If set to false, extra lines are left in place. Bug 7088. * Add XML_RPC_Message::$response_payload property. Makes logging responses easy.
1.4.5
2006-01-14
stable
* Have server send headers individualy as opposed to sending them all at once. Necessary due to changes PHP 4.4.2.
1.4.4
2005-10-15
stable
* Properly deal with empty values in struct's.
1.4.3
2005-09-24
stable
* Make XML_RPC_encode() properly handle dateTime.iso8601. Request 5117.
1.4.2
2005-09-18
stable
* Allow empty <value>'s without <types>'s. Bug 5315.
1.4.1
2005-09-07
stable
* Don't add debug info unless debug is on. Bug 5136. * Use is_a() instead of class_name() so people can use their own XML_RPC_Message objects. Request 5002.
1.4.0
2005-08-14
stable
* MAJOR SECURITY FIX: eliminate use of eval(). * Using socket_get_status() because stream_get_meta_data() was introduced in 4.3.0, but we need to support 4.2.0. Bug 4805.
1.3.3
2005-07-15
stable
* Eliminate memory leak by resetting $XML_RPC_xh each time parseResponse() is called. Bug 4780. * Using socket_set_timeout() because stream_set_timeout() was introduced in 4.3.0, but we need to support 4.2.0. Bug 4805.
1.3.2
2005-07-07
stable
* Eliminate path disclosure vulnerabilities by suppressing error messages when eval()'ing. * Eliminate path disclosure vulnerability by catching bogus parameters submitted to XML_RPC_Value::serializeval(). * In XML_RPC_Server::service(), only call createServerPayload() and createServerHeaders() if necessary. Fixes compatibility issue introduced in Release 1.3.0RC1 for users who set the $serviceNow parameter of XML_RPC_Server() to 0. Bug 4757. * Change "var $errstring" to "var $errstr". Bug 4582. Was put into CVS version 1.75 of RPC.php but didn't make it into RELEASE_1_3_1.
1.3.1
2005-06-29
stable
* Security fix. Update highly recommended!
1.3.0
2005-06-13
stable
* Stable release. See earlier releases for changes since 1.2.2.
1.3.0RC3
2005-05-10
beta
* When verifying requests against function signatures, if the number of parameters don't match, provide an appropriate message. NOTE: this resolves a path disclosure vulnerability. (Refines the changes made in the last commit.) Bug 4231. * XML_RPC_Message::getParam() now returns an XML_RPC_Response object upon error. Changed from Release 1.3.0RC2. * Add the XML_RPC_Value::isValue() method. For testing if an item is an XML_RPC_Value object. * If XML_RPC_Client::send() is given an incorrect $msg parameter, raise an error with the new XML_RPC_ERROR_PROGRAMMING code and return 0. * Improve cross-platform operation by using PEAR::loadExtension() instead of dl(). * Use <br /> instead of <br> in XML_RPC_Value::dump().
1.3.0RC2
2005-05-05
beta
* If XML_RPC_Message::getParam() is given an incorrect parameter, raise an error with the new XML_RPC_ERROR_INCORRECT_PARAMS code and return FALSE. * Handle improper requests to XML_RPC_Server::verifySignature(). Bug 4231. * Try to allow HTTP 100 responses if followed by a 200 response. Bug 4116. * Help Delphi users by making RPCMETHODNAME an alias for METHODNAME. Request 4205.
1.3.0RC1
2005-04-07
beta
* Improve timeout handling for situations where connection to server is made but no response is not received in time. Accomplished via stream_set_timeout(). Request 3963. * Add Fault Code 6: "The requested method didn't return an XML_RPC_Response object." Request 4032. * Add the createServerPayload() and createServerHeaders() methods and the $server_payload and $server_headers properties. Request 3121. * As in earlier versions, if the $serviceNow parameter to XML_RPC_Server() is 0, no data will be returned, but now the new $server_payload and $server_headers properties will be set. * Convert the parser handle to an integer before using it as an index for $XML_RPC_xh[$parser]. Reduces E_STRICT notices. Bug 3782. * Add createHeaders() method and $headers property to XML_RPC_Client to make testing easier.
1.2.2
2005-03-07
stable
* When using a proxy, add the protocol to the Request-URI, making it an "absoluteURI" as per the HTTP 1.0 spec. Bug 3679.
1.2.1
2005-03-01
stable
* Add isset() check before examining the dispatch map. Bug 3658.
1.2.0
2005-02-27
stable
* Provide the "stable" release. * Add package2.xml for compatibility with PEAR 1.4.0. * For changes since 1.1.0, see the changelogs for the various RC releases.
1.2.0RC7
2005-02-22
beta
* Add the setSendEncoding() method and $send_encoding property to XML_RPC_Message. Request 3537. * Allow class methods to be mapped using either syntax: 'function' => 'hello::sayHello', or 'function' => array('hello', 'sayhello'), Bug 3363. * Use 8192 instead of 32768 for bytes in fread() in parseResponseFile(). Bug 3340.
1.2.0RC6
2005-01-25
beta
* Don't put the protocol in the Host field of the POST data. (danielc)
1.2.0RC5
2005-01-24
beta
* If $port is 443 but a protocol isn't specified in $server, assume ssl:// is the protocol.
1.2.0RC4
2005-01-24
beta
* When a connection attempt fails, have the method return 0. (danielc) * Move the protocol/port checking/switching and the property settings from sendPayloadHTTP10() to the XML_RPC_Client constructor. (danielc) * Add tests for setting the client properties. (danielc) * Remove $GLOBALS['XML_RPC_twoslash'] since it's not used. (danielc) * Bundle the tests with the package. (danielc)
1.2.0RC3
2005-01-19
beta
* ssl uses port 443, not 445.
1.2.0RC2
2005-01-11
beta
* Handle ssl:// in the $server string. (danielc) * Also default to port 445 for ssl:// requests as well. (danielc) * Enhance debugging in the server. (danielc)
1.2.0RC1
2004-12-30
beta
* Make things work with SSL. Bug 2489. (nkukard lbsd net) * Allow array function callbacks (Matt Kane) * Some minor speed-ups (Matt Kane) * Add Dump.php to the package (Christian Weiske) * Replace all line endings with \r\n. Had only done replacements on \n. Bug 2521. (danielc) * Silence fsockopen() errors. Bug 1714. (danielc) * Encode empty arrays as an array. Bug 1493. (danielc) * Eliminate undefined index notice when submitting empty arrays to XML_RPC_Encode(). Bug 1819. (danielc) * Speed up check for enumerated arrays in XML_RPC_Encode(). (danielc) * Prepend "XML_RPC_" to ERROR_NON_NUMERIC_FOUND, eliminating problem when eval()'ing error messages. (danielc) * Use XML_RPC_Base::raiseError() instead of PEAR::raiseError() in XML_RPC_ee() because PEAR.php is lazy loaded. (danielc) * Allow raiseError() to be called statically. (danielc) * Stop double escaping of character entities. Bug 987. (danielc) NOTICE: the following have been removed: * XML_RPC_dh() * $GLOBALS['XML_RPC_entities'] * XML_RPC_entity_decode() * XML_RPC_lookup_entity() * Determine the XML's encoding via the encoding attribute in the XML declaration. Bug 52. (danielc)
1.1.0
2004-03-15
stable
* Added support for sequential arrays to XML_RPC_encode() (mroch) * Cleaned up new XML_RPC_encode() changes a bit (mroch, pierre) * Remove "require_once 'PEAR.php'", include only when needed to raise an error * Replace echo and error_log() with raiseError() (mroch) * Make all classes extend XML_RPC_Base, which will handle common functions (mroch) * be tolerant of junk after methodResponse (Luca Mariano, mroch) * Silent notice even in the error log (pierre) * fix include of shared xml extension on win32 (pierre)
1.0.4
2002-10-02
stable
* added HTTP proxy authorization support (thanks to Arnaud Limbourg)
1.0.3
2002-05-19
stable
* fix bug when parsing responses with boolean types
1.0.2
2002-04-16
stable
* E_ALL fixes * fix HTTP response header parsing
1.0.1
2001-09-25
stable
This is a PEAR-ified version of Useful Inc's 1.0.1 release. Includes an urgent security fix identified by Dan Libby <dan@libby.com>.