Introduction
Welcome to the homepage of "XML-RPC for PHP". It is a library implementing the XML-RPC
protocol, written in PHP. It is also known as PHPXMLRPC.
It is designed for ease of use, flexibility and completeness. High speed and reduced memory footprint are not the main
goals of the project.
XML-RPC is a format devised by Userland Software for achieving remote procedure call via XML using HTTP as the transport. XML-RPC has its own website, http://xmlrpc.com
Note that this is not the library which can be compiled as a
PHP extension and has been bundled with PHP from version 4.1 up to
version 7.4.
This is also not the same library as the one that is part of PEAR,
either. They both share a common ancestry, since the PEAR version is a branch of the original phpxmlrpc library, later
independently maintained.
Main Features
- Support for creating both xml-rpc clients and servers
- Fully automated or fully manual, fine-grained encoding and decoding from PHP values to xml-rpc
- Support for UTF8, Latin-1 and ASCII character encodings. With the PHP mbstring extension enabled, even more character sets are supported
- Support for http features including compression of both requests and responses, cookies, proxies, basic and digest auth, ntlm auth, https, http2, keepalives (some only with the PHP cURL extension)
- Support for `system.listMethods`, `system.methodHelp`, `system.multicall` and `system.getCapabilities` methods
- Support for the `<NIL/>` and `<EX:NIL/>` extensions to xml-rpc
- Possibility to register existing PHP function or class methods as webservices, extracting value-added information from phpdoc comments, including code-generation capabilities
- Optional validation in the server of parameter types of incoming xml-rpc request
- Zero dependencies on 3rd party packages
- A web based visual debugger is included with the library. It is also available as self-contained Container from https://github.com/gggeek/phpxmlrpc-debugger/
- A package emulating the API of the native XML-RPC extension for PHP, built on this library, is available at https://github.com/gggeek/polyfill-xmlrpc
- Other cool features are delivered with extra packages, such as an xml-rpc server that automatically generates html documentation of exposed webservices, and a (work-in-progress) jsonrpc library...
- Last but not least, a Javascript version of the library is available, which implements the same API, allowing to leverage acquired knowledge to easily build nodejs/browser clients
Requirements
The library has been designed with goals of flexibility and backward compatibility. As such, it supports a wide range of PHP installs. Note that not all features of the lib are available in every configuration.
- PHP 5.4.0 or later; 7.4 or later recommended
- the PHP "curl" extension is needed if you wish to use HTTPS, HTTP 1.1 or HTTP2 to communicate with remote servers or to use NTLM/Digest authentication
- the PHP "mbstring" extension is needed to allow reception of requests/responses in character sets other than ASCII, Latin-1, UTF-8
- the PHP "xmlrpc" native extension is not required, but if it is installed, there will be no interference with the operation of this library
Download
For the latest release, check out the Releases page on GitHub.
NB: there are a security-related fixes in releases 4.9.1 and 4.9.2, please upgrade to 4.9.2 or later ASAP!
Ancient releases (older than version 2.2.2) are still available for historical purposes at SourceForge
License
Use of this software is subject to the terms in the license.txt file (BSD License).
News
The latest stable release is version 4.11.0 released on Sep. 7, 2024 (Release notes)
7/1/2023
The user manual has finally been updated to cover modern usage of the library. The PDF version is now available for download from this site. The API docs have been regenerated with more detailed type information.
17/12/2022
the "sister" library `jsxmlrpc`, implementing xml-rpc support in javascript with the same API of phpxmlrpc, is now available as a NodeJS package at https://www.npmjs.com/package/@jsxmlrpc/jsxmlrpc
29/11/2022
the xml-rpc debugger which was historically made available as part of this library, or as an online tool (currently at gggeek.altervista.org), is now also packaged as a Docker Container, making it easier to use by anyone who does not have a PHP installation set up. Available at https://github.com/gggeek/phpxmlrpc-debugger/
Older news (up to December 2021)...
Documentation
User manual
The user manual for version 4 can be viewed online on GitHub
or downloaded in pdf format here;
it is complemented by automatically generated API docs.
A good way to get started with API usage is to take a look at the demo source code,
showcasing both Client and Server use cases.
Manuals for older versions
- API changes between version 3 and version 4
- User manual for version 3, in HTML or PDF format.
For the adventurous there is even an xml+css version - User manual for version 1.2.1
- User manual for version 1.0.99
Release Notes
The description of changes in each release is available as part of the distribution. It is also accessible online.
Changelogs
Detailed changelogs are available on GitHub for all releases
starting with 2.2.2.
A changelog for very old versions, before the introduction of git (ie. up to version 2.2.2), is also available
online.
Online demo server
A demo server is active at the address https://gggeek.altervista.org/sw/xmlrpc/demo/server/server.php. It
exposes functions that can be used for interoperability testing (the full code for the server is included in the
Git version of the library).
Online xml-rpc debugger
A demo xml-rpc debugger application, built on top of this library, is active at the address
https://gggeek.altervista.org/sw/xmlrpc/debugger/.
You can use the debugger to e.g. query the demo server, or debug your own personal xml-rpc server, if it is accessible
on the net.
If your xml-rpc server is not accessible from the internet, we recommend using the Container version
of the debugger.
Support
XML-RPC for PHP is offered "as-is" without any warranty or commitment to support. However, informal advice and help is available via the XML-RPC for PHP website and mailing list.
Online Support
Bugs, feature requests and patches can be posted to the project's development website.
Mailing lists
- User's mailing list - very low traffic
- Developers' mailing list - discontinued on December 2013
Contact
For security related issues feel free to contact ggiunta at users.sourceforge.netThe Jellyfish Book
Together with Simon St.Laurent and Joe Johnston, Edd Dumbill wrote a book on XML-RPC for O'Reilly and Associates on
XML-RPC. It features a rather fetching jellyfish on the cover.
Complete details of the book are available from O'Reilly's web site.
Edd is responsible for the chapter on PHP, which includes a worked example of creating a forum server, and hooking it
up the (now discontinued) O'Reilly's Meerkat service in order to allow commenting on news stories from around the Web.
If you've benefited from the effort that has been put into writing this software, then please consider buying the book!
Development
Source code, bug tracker, pull requests, releases are all managed on GitHub
Roadmap
See the list of issues on Github
History
XML-RPC for PHP was originally developed by Edd Dumbill of Useful Information Company. As of the 1.0 stable release, the project was opened to wider involvement and moved to SourceForge. It is hosted on GitHub since December 2013.
PHPXMLRPC or derivative versions are or have been used in many open source projects, including Ampache, Xaraya, Drupal (only up to releases 4.6.2 and 4.5.4), PostNuke, b2evolution, nucleus cms, phpmyfaq, phpPgAds, phpgroupware, egroupware, TikiWiki, Civicspace, MailWatch for MailScanner, WikiTeX and OpenAutonomy.
Acknowledgements
All the contributors listed on Github, plus:- Daniel E. Baumann
- James Bercegay
- Leon Blackwell
- Stephane Bortzmeyer
- Daniel Convissor
- Geoffrey T. Dairiki
- Stefan Esser
- James Flemer
- Ernst de Haan
- Tom Knight
- Axel Kollmorgen
- Peter Kocks
- Daniel Krippner
- S. Kuip
- A. Lambert
- Frederic Lecointre
- Dan Libby
- Arnaud Limbourg
- Miles Lott
- Ernest MacDougal Campbell III
- Lukasz Mach
- Kjartan Mannes
- Luca Mariano
- Ben Margolin
- Nicolay Mausz
- Justin Miller
- Jan Pfeifer
- Giancarlo Pinerolo
- Grant Rauscher
- Peter Russel
- Andres Salomon
- Jean-Jacques Sarton
- Viliam Simko
- Idan Sofer
- Douglas Squirrel
- Heiko Stübner
- Anatoly Techtonik
- Tommaso Trani
- Eric van der Vlist
- Christian Wenz
- Jim Winstead
- Przemyslaw Wroblewski
- Bruno Zanetti Melotti
Page last updated: 2024/9/7