1441 |
ariadna |
1 |
## XML-RPC for PHP version 4.11.1 - 2025/1/17
|
|
|
2 |
|
|
|
3 |
* fixed: removed one warning emitted by the Server on php 8.4 and later (issue #125, thanks @ziegenberg)
|
|
|
4 |
|
|
|
5 |
|
|
|
6 |
## XML-RPC for PHP version 4.11.0 - 2024/9/7
|
|
|
7 |
|
|
|
8 |
* new: added new Client option `Client::OPT_EXTRA_HEADERS`, useful to set custom HTTP headers
|
|
|
9 |
|
|
|
10 |
* improved: compatibility with not-yet-released PHP version 8.4
|
|
|
11 |
|
|
|
12 |
|
|
|
13 |
## XML-RPC for PHP version 4.10.4 - 2024/06/27
|
|
|
14 |
|
|
|
15 |
* fixed: Response returned from the library in case of HttpException did not have set the correct `status_code` member var
|
|
|
16 |
|
|
|
17 |
|
|
|
18 |
## XML-RPC for PHP version 4.10.3 - 2024/04/24
|
|
|
19 |
|
|
|
20 |
* fixed: avoid emitting warnings when parsing some classes of malformed XML (issue #116)
|
|
|
21 |
|
|
|
22 |
* fixed: the library will now return a Fault `Response` object with error code 2 whenever parsing some xml responses
|
|
|
23 |
which do not conform to the specification, namely those having both `fault` and `params` elements inside `methodResponse`
|
|
|
24 |
|
|
|
25 |
|
|
|
26 |
## XML-RPC for PHP version 4.10.2 - 2024/04/14
|
|
|
27 |
|
|
|
28 |
* fixed: allow `Server` subclasses to use their own Parser to determine the Request's charset
|
|
|
29 |
|
|
|
30 |
* fixed: the Server would not swallow and log php warnings generated from end user's method handler functions unless
|
|
|
31 |
debug mode was set to 2 or higher. It now does that always.
|
|
|
32 |
|
|
|
33 |
* fixed: the library will now return a Fault `Response` object whenever parsing some xml responses which do not conform
|
|
|
34 |
to the specification, namely the for following cases:
|
|
|
35 |
|
|
|
36 |
- a `methodResponse` element without either `fault` or `params`
|
|
|
37 |
- a `methodResponse` element with a `params` child which does not have a single `param`
|
|
|
38 |
|
|
|
39 |
* improved: test on PHP 8.3 as part of CI
|
|
|
40 |
|
|
|
41 |
|
|
|
42 |
## XML-RPC for PHP version 4.10.1 - 2023/02/22
|
|
|
43 |
|
|
|
44 |
* fixed: class autoloading got broken in rel 4.10.0 for users of the legacy API (issue #111)
|
|
|
45 |
|
|
|
46 |
* fixed: let the Server create Response objects whose class can be overridden by subclasses (this is required by the
|
|
|
47 |
json-rpc server now that the `xml_header` method has been moved to the `Request` object)
|
|
|
48 |
|
|
|
49 |
* fixed: let the Client create Requests whose class can be overridden by subclasses, within the `_try_multicall` method,
|
|
|
50 |
which is called from `multicall`
|
|
|
51 |
|
|
|
52 |
* fixed: declare the library not to be compatible with old versions of 'phpxmlrpc/extras' and 'phpxmlrpc/jsonrpc'
|
|
|
53 |
|
|
|
54 |
|
|
|
55 |
## XML-RPC for PHP version 4.10.0 - 2023/02/11
|
|
|
56 |
|
|
|
57 |
* changed: the minimum php version required has been increased to 5.4
|
|
|
58 |
|
|
|
59 |
* changed: dropped support for parsing cookie headers which follow the obsolete Cookie2 specification
|
|
|
60 |
|
|
|
61 |
* new: it is now possible to make the library generate warning messages whenever a deprecated feature is used, such as
|
|
|
62 |
calling deprecated methods, using deprecated method parameters, or reading/writing deprecated object properties.
|
|
|
63 |
This is disabled by default, and can be enabled by setting `PhpXmlRpc\PhpXmlRpc::xmlrpc_silence_deprecations = false`.
|
|
|
64 |
Note that the deprecation warnings will be by default added to the php error log, and not be displayed on screen.
|
|
|
65 |
If you prefer them to be handled in some other way, you should take over the Logger, as described below here
|
|
|
66 |
|
|
|
67 |
* new: allow to specify other charsets than the canonical three (UTF-8, ISO-8859-1, ASCII), when mbstring is
|
|
|
68 |
available, both for outgoing and incoming data (issue #42).
|
|
|
69 |
|
|
|
70 |
For outgoing data, this can be set in `$client->request_charset_encoding` and `$server->response_charset_encoding`.
|
|
|
71 |
The library will then transcode the data fed to it by the application into the desired charset when serializing
|
|
|
72 |
it for transmission.
|
|
|
73 |
|
|
|
74 |
For incoming data, this can be set using `PhpXmlRpc::$internal_encoding`. The library will then transcode the data
|
|
|
75 |
received from 3rd parties into the desired charset when handling it back to the application.
|
|
|
76 |
|
|
|
77 |
An example of using this feature has been added to demo file `windowscharset.php`
|
|
|
78 |
|
|
|
79 |
* new: allow the library to pass to the application DateTime objects instead of string for all _received_ dateTime.iso8601
|
|
|
80 |
xml-rpc values. This includes both client-side, for data within the `$response->value()`, and server-side, for data
|
|
|
81 |
passed to xml-rpc method handlers, and works for both 'xmlrpcvals' and 'phpvals' modes.
|
|
|
82 |
In order to enable this, you should set `PhpXmlRpc\PhpXmlRpc::$xmlrpc_return_datetimes = true`.
|
|
|
83 |
|
|
|
84 |
NB: since the xml-rpc spec mandates that no Timezone is used on the wire for dateTime values, the DateTime objects
|
|
|
85 |
created by the library will be set to the default php timezone, set using the 'date.timezone' ini setting.
|
|
|
86 |
|
|
|
87 |
NB: if the received strings are not parseable as dates, NULL will be returned instead of an object, but that can
|
|
|
88 |
be avoided by setting `PhpXmlRpc\PhpXmlRpc::$xmlrpc_reject_invalid_values = true`, see below.
|
|
|
89 |
|
|
|
90 |
* improved: be more strict in the `Response` constructor and in `Request::addParam`: both of those will now generate
|
|
|
91 |
an error message in the log if passed unexpected values
|
|
|
92 |
|
|
|
93 |
* improved: be more strict in the data accepted as valid for dateTime xml-rpc values. Clearly invalid dates such as a
|
|
|
94 |
month '13', day '32' or hour '25' will cause an error message to be logged or the value to be rejected, depending
|
|
|
95 |
on configuration
|
|
|
96 |
|
|
|
97 |
* improved: be more strict in the data accepted as valid for 'float' and 'int' xml-rpc values. If you need to allow
|
|
|
98 |
different formats for numbers, you can set a custom value to `PhpXmlRpc\PhpXmlRpc::$xmlrpc_double_format` and
|
|
|
99 |
`PhpXmlRpc\PhpXmlRpc::$xmlrpc_int_format`
|
|
|
100 |
|
|
|
101 |
* new: allow the library to be stricter in parsing the received xml: by setting
|
|
|
102 |
`PhpXmlRpc\PhpXmlRpc::$xmlrpc_reject_invalid_values = true`, incoming xml which has data not conforming to the expected
|
|
|
103 |
format for value elements of type date, int, float, double, base64 and methodname will be rejected instead of passed
|
|
|
104 |
on to the application. The same will apply for elements of type struct-member which miss either the name or the value
|
|
|
105 |
|
|
|
106 |
* new: it is now possible to tell the library to allow non-standard formats for received datetime value, such as f.e.
|
|
|
107 |
datetimes with a timezone specifier, by setting a custom value to `PhpXmlRpc\PhpXmlRpc::$xmlrpc_datetime_format`
|
|
|
108 |
(issue #46).
|
|
|
109 |
|
|
|
110 |
* new: it is now possible to tell the library to allow non-standard formats for received int and float values, as well
|
|
|
111 |
as for methdoname elements. See the api docs for `PhpXmlRpc\PhpXmlRpc` static variables.
|
|
|
112 |
|
|
|
113 |
* fixed: when a server is configured with its default value of 'xmlrpcvals' for `$functions_parameters_type`, and
|
|
|
114 |
a method handler in the dispatch was defined with `'parameters_type' = 'phpvals'`, the handler would be passed a
|
|
|
115 |
Request object instead of plain php values.
|
|
|
116 |
|
|
|
117 |
* fixed: made sure all debug output goes through the logger at response parsing time (there was one printf call left)
|
|
|
118 |
|
|
|
119 |
* fixed: `Client::send` will now return an error Response when it is requested to use an auth method that it does not
|
|
|
120 |
support, instead of logging an error message and continuing with another auth schema. The returned error code is 20
|
|
|
121 |
|
|
|
122 |
* fixed: when calling `Client::multicall()` with `$client->return_type = 'xml'`, the code would be always falling back to
|
|
|
123 |
non-multicall requests
|
|
|
124 |
|
|
|
125 |
* fixed: support calling `Client::setSSLVersion()` for the case of not using curl transport
|
|
|
126 |
|
|
|
127 |
* fixed: receiving integers which use the '<EX:I8>' xml tag
|
|
|
128 |
|
|
|
129 |
* fixed: setting/retrieving the php value from a Value object using array notation would fail if the object was created
|
|
|
130 |
using `i4` then accessed using `int`, eg: `$v = new Value(1, 'i4'); $v[$v->scalrtyp()] = 2;`
|
|
|
131 |
|
|
|
132 |
* fixed: setting values to deprecated Response property `cookies` would trigger a PHP notice, ex:
|
|
|
133 |
`$response->_cookies['name'] = ['value' => 'something'];` (introduced in 4.6.0)
|
|
|
134 |
|
|
|
135 |
* fixed: made deprecated method `Value::structEach` work again with php 8.0 and later
|
|
|
136 |
|
|
|
137 |
* new: method `PhpXmlRpc::useInteropFaults()` can be used to make the library change the error codes it generates to
|
|
|
138 |
match the spec described at https://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php
|
|
|
139 |
|
|
|
140 |
* new: both `Request` and `Response` acquired methods `getPayload` and `getContentType`
|
|
|
141 |
|
|
|
142 |
* new: method `Response::valueType()`
|
|
|
143 |
|
|
|
144 |
* new: method `Client::getUrl()`
|
|
|
145 |
|
|
|
146 |
* new: method `Server::setDispatchMap()`
|
|
|
147 |
|
|
|
148 |
* new: added methods `getOption`, `setOption`, `setOptions` and `getOptions` to both Client and Server, meant to replace
|
|
|
149 |
direct access to _all public properties_ as well as the `$timeout` argument in calls to `Client::send` and `Client::multicall`
|
|
|
150 |
|
|
|
151 |
* new: by using `Client::setOption('extracurlopts')`, it is possible to pass in protocol=specific options for when
|
|
|
152 |
using the Socket http transport. The value has to be an array with key being 'socket' or 'ssl', and the value an array
|
|
|
153 |
(see https://www.php.net/manual/en/context.socket.php and https://www.php.net/manual/en/context.ssl.php)
|
|
|
154 |
|
|
|
155 |
* new: it is now possible to inject a custom logger into helper classes `Charset`, `Http`, `XMLParser`, inching a step
|
|
|
156 |
closer to supporting DIC patterns (issue #78)
|
|
|
157 |
|
|
|
158 |
* new: method `PhpXmlRpc::setLogger()`, to simplify injecting a custom logger into all classes of the library in one step
|
|
|
159 |
|
|
|
160 |
* improved: the Client will automatically try to use cURL for requests using Digest/NTLM auth, unless told explicitly
|
|
|
161 |
told not to do so via option 'use_curl'
|
|
|
162 |
|
|
|
163 |
* improved: the Client is more verbose in logging issues when trying to compress a Request for sending
|
|
|
164 |
|
|
|
165 |
* improved: the `Logger` class now sports methods adhering to Psr\Log\LoggerInterface
|
|
|
166 |
|
|
|
167 |
* improved: limit the size of incoming data which will be used in error responses and logged error messages, making
|
|
|
168 |
it slightly harder to carry out DOS attacks against the library
|
|
|
169 |
|
|
|
170 |
* new: passing value -1 to `$client->setDebug` will avoid storing the full http response data in the returned Response
|
|
|
171 |
object when executing `call`. This could be useful in reducing memory usage for big responses
|
|
|
172 |
|
|
|
173 |
* new: when calling `Wrapper::wrapXmlrpcMethod` and `wrapXmlrpcServer`, it is possible to pass 'throw_on_fault' as option
|
|
|
174 |
to argument `$extraOptions`. This will make the generated function throw on http errors and xml-rpc faults instead of
|
|
|
175 |
returning a Response object
|
|
|
176 |
|
|
|
177 |
* new: when calling `Wrapper::wrapXmlrpcMethod`, `wrapXmlrpcServer`, `wrapPhpFunction` and `wrapPhpClass` it is possible
|
|
|
178 |
to pass 'encode_nulls' as option to argument `$extraOptions`. This will make the generated code emit a '<nil/>'
|
|
|
179 |
xml-rpc element for php null values, instead of emitting an empty-string xml-rpc element
|
|
|
180 |
|
|
|
181 |
* new: methods `Wrapper::holdObject()` and `Wrapper::getheldObject()`, allowing flexibility in storing object instances
|
|
|
182 |
for code-generation scenarios involving `Wrapper::wrapPhpClass` and `Wrapper::wrapPhpFunction`
|
|
|
183 |
|
|
|
184 |
* improved: all `Value` methods now follow snakeCase convention
|
|
|
185 |
|
|
|
186 |
* improved: all the Exceptions thrown by the library are now `\PhpXmlRpc\Exception` or subclasses thereof
|
|
|
187 |
|
|
|
188 |
* improved: all the Client's `setSomething()` methods now return the client object, allowing for usage of fluent style
|
|
|
189 |
calling. The same applies to `Request::setDebug`
|
|
|
190 |
|
|
|
191 |
* improved: when calling `Client::multicall()`, the returned `Response` objects did not have any data in their `httpResponse`
|
|
|
192 |
|
|
|
193 |
* new: method `Helper\Date::iso8601Encode` now accepts a DateTime input beside a timestamp
|
|
|
194 |
|
|
|
195 |
* new: in the dispatch map, it is now possible to set different exception handling modes for each exposed xml-rpc method
|
|
|
196 |
|
|
|
197 |
* new: method `Server::add_to_map` is deprecated in favour of `addToMap`. It has also acquired new parameters:
|
|
|
198 |
`$parametersType = false, $exceptionHandling = false`
|
|
|
199 |
|
|
|
200 |
* improved: the `XMLParser` accepts more options in its constructor (see phpdocs for details)
|
|
|
201 |
|
|
|
202 |
* improved: removed usage of `extension_loaded` in favour of `function_exists` when checking for mbstring. This allows
|
|
|
203 |
for mbstring functions to be polyfilled
|
|
|
204 |
|
|
|
205 |
* improved: the code generated by the various code-generating methods of `Wrapper` are formatted better, and include
|
|
|
206 |
more phpdoc blocks too
|
|
|
207 |
|
|
|
208 |
* improved: made the `Wrapper` and `Client` classes easy to subclass for use by the PhpJsonRpc library
|
|
|
209 |
|
|
|
210 |
* improved: added the library version number to the debugger title line
|
|
|
211 |
|
|
|
212 |
* improved: the debugger will now sport the "load method synopsis" button when interacting with json-rpc servers
|
|
|
213 |
|
|
|
214 |
* improved: added an example Symfony Client and Server to the demo files (using Symfony 6 / PHP 8 syntax)
|
|
|
215 |
|
|
|
216 |
* improved: added to the `taskfile` command an option to automatically set up the git hooks for development
|
|
|
217 |
|
|
|
218 |
* improved: made sure the test container and gha test runners have at least one locale with comma as decimal separator
|
|
|
219 |
|
|
|
220 |
* BC notes:
|
|
|
221 |
|
|
|
222 |
*NB* Given the considerable amount of API changes in this release, a set of tables listing every change has been
|
|
|
223 |
added in doc/api_changes_v4.10.md; a textual description follows.
|
|
|
224 |
|
|
|
225 |
Besides what can be inferred from the changes listed above, for library users:
|
|
|
226 |
|
|
|
227 |
- the data passed to the application is not encoded anymore in UTF-8 when setting `PhpXmlRpc::$internal_encoding`
|
|
|
228 |
to a custom character set and the mbstring extension is enabled. It will be encoded instead in the specified character
|
|
|
229 |
set. We expect this to affect few users, as setting `PhpXmlRpc::$internal_encoding` to a custom character set did
|
|
|
230 |
not make a lot of sense beforehand
|
|
|
231 |
- the regular expression used to check if incoming int and double values are valid has been tightened. That can be
|
|
|
232 |
tweaked via use of `PhpXmlRpc\PhpXmlRpc::$xmlrpc_double_format` and `PhpXmlRpc\PhpXmlRpc::$xmlrpc_int_format`
|
|
|
233 |
- the regular expression used to check if incoming datetime values are valid has been tightened to reject clearly
|
|
|
234 |
invalid dates. It has been widened as well, to allow leap seconds. That can be tweaked via use of
|
|
|
235 |
`PhpXmlRpc\PhpXmlRpc::$xmlrpc_datetime_format`
|
|
|
236 |
- a regular expression has been introduced to check incoming 'methodname' elements. In the default configuration it
|
|
|
237 |
will trigger error messages in the logs, but not reject the calls. It can be tweaked via use of
|
|
|
238 |
`PhpXmlRpc\PhpXmlRpc::$xmlrpc_methodname_format`
|
|
|
239 |
- an error message will now be generated if, in incoming data, a STRUCT element has no NAME
|
|
|
240 |
- parameters `$timeout` and `$method` are now considered deprecated in `Client::send()` and `Client::multicall()`
|
|
|
241 |
- Client properties `$errno` and `$errstring` are now deprecated
|
|
|
242 |
- direct access to all properties of Client and Server is now deprecated and should be replaced by calls to
|
|
|
243 |
`setOption` / `getOption`. The same applies to the following "setter" methods of the Client: `setSSLVerifyPeer`,
|
|
|
244 |
`setSSLVerifyHost`, `setSSLVersion`, `setRequestCompression`, `setCurlOptions`, `setUseCurl`, `setUserAgent`
|
|
|
245 |
- direct access to `Wrapper::$objHolder` is now deprecated
|
|
|
246 |
- the code generated by the debugger when using "Generate stub for method call" will throw on errors instead of
|
|
|
247 |
returning a Response object
|
|
|
248 |
|
|
|
249 |
For library extenders:
|
|
|
250 |
|
|
|
251 |
- if you subclassed the `Server` class, and dynamically inject/manipulate the dispatch map, be aware that the server
|
|
|
252 |
will now validate the methodname from the received request as soon as possible during the xml parsing phase, via
|
|
|
253 |
a new method `methodNameCallback`. You might want to reimplement it and f.e. make it a NOOP to avoid such validation
|
|
|
254 |
- new method `Response::xml_header` has replaced `Server::xml_header`. Take care if you had overridden the server
|
|
|
255 |
version - you might need to override `Server::service`
|
|
|
256 |
- the `$options` argument passed to `XMLParser::parse` will now contain both options intended to be passed down to
|
|
|
257 |
the php xml parser, and further options used to tweak the parsing results. If you have subclassed `XMLParser`
|
|
|
258 |
and reimplemented the `parse` methods, or wholesale replaced it, you will have to adapt your code: both for that,
|
|
|
259 |
and for making sure that it sets `$this->current_parsing_options['xmlrpc_null_extension']` from
|
|
|
260 |
`PhpXmlRpc::$xmlrpc_null_extension`
|
|
|
261 |
- also, if you had reimplemented `XMLParser::parse`, be warned that:
|
|
|
262 |
- you should return `$this->_xh` instead of void
|
|
|
263 |
- the callers now treat differently results when `_xh['isf'] > 3`
|
|
|
264 |
- `Client` protected methods `sendPayloadSocket`, `sendPayloadCURL` and `prepareCurlHandle` are now deprecated. They
|
|
|
265 |
have been replaced by `sendViaSocket`, `sendViaCURL` and `createCurlHandle` respectively
|
|
|
266 |
- if you subclassed the `Client` class, take care of new static variables `$requestClass` and `$responseClass`,
|
|
|
267 |
which should be used to instantiate requests and responses
|
|
|
268 |
- if you had been somehow interacting with private method `Client::_try_multicall`, be warned its returned data has
|
|
|
269 |
changed: it now returns a Response for the cases in which it previously returned false, and an array of Response
|
|
|
270 |
objects for the cases in which it previously returned a string
|
|
|
271 |
- if you replaced the `Logger` class, take care that you will have to implement methods `error`, `warning` and `debug`
|
|
|
272 |
(all is ok if you subclassed it)
|
|
|
273 |
- calling method `Value::serializeData` is now deprecated
|
|
|
274 |
- traits have been introduced for all classes dealing with Logger, XMLParser and CharsetEncoder; method `setCharsetEncoder`
|
|
|
275 |
is now static
|
|
|
276 |
- new methods in helper classes: `Charset::knownCharsets`, `Http::parseAcceptHeader`, `XMLParser::truncateValueForLog`
|
|
|
277 |
- protected property `Server::$accepted_charset_encodings` is now deprecated
|
|
|
278 |
- exception `\PhpXmlRpc\Exception\PhpXmlRpcException` is deprecated. Use `\PhpXmlRpc\Exception` instead
|
|
|
279 |
|
|
|
280 |
|
|
|
281 |
## XML-RPC for PHP version 4.9.5 - 2023/01/11
|
|
|
282 |
|
|
|
283 |
* improved: revised all demo files. Showcase more features in client demos; isolate better testsuite functions in
|
|
|
284 |
server demos and make sure they are not active unless triggered by running the tests; add demos for code-generation
|
|
|
285 |
for both clients and servers
|
|
|
286 |
|
|
|
287 |
* improved: added cli command `taskfile`, which can be used to download the demo files or the visualeditor component for
|
|
|
288 |
the debugger (requires bash, curl and a smattering of other common unix/linux/macos? tools)
|
|
|
289 |
|
|
|
290 |
* improved: for php 7 and up, catch php Errors besides Exceptions thrown by method handler functions (ie. server-side)
|
|
|
291 |
|
|
|
292 |
* fixed: when using the Exception or Error thrown by a method handler function to build the xml-rpc response, override
|
|
|
293 |
fault Code 0, as it breaks response serialization
|
|
|
294 |
|
|
|
295 |
|
|
|
296 |
## XML-RPC for PHP version 4.9.4 - 2023/1/7
|
|
|
297 |
|
|
|
298 |
* improved: updated the user's manual to be inline with the version4 API and modern coding practices.
|
|
|
299 |
The manual is now bundled in the default distribution tarball, and is easily viewable as html, provided you can
|
|
|
300 |
serve it using a webserver. It is also available as pdf at https://gggeek.github.io/phpxmlrpc/doc-4/phpxmlrpc_manual.pdf
|
|
|
301 |
|
|
|
302 |
* improved: automated the process of creating the github release when pushing a release-tag to GitHub; also add a tarball
|
|
|
303 |
of the demo files as release asset, and automatically update both http://gggeek.github.io and the code on altervista.org
|
|
|
304 |
|
|
|
305 |
* improved: added a pre-push git hook script, to avoid pushing tagged versions with inconsistent version tags in code.
|
|
|
306 |
To install it, execute `composer run-script setup-git-hooks` (NB: it is only useful for developers of this library,
|
|
|
307 |
not for the developers simply using it)
|
|
|
308 |
|
|
|
309 |
* fixed: the value for error 'no_http2' has been switched from 15 to 19 to avoid a collision
|
|
|
310 |
|
|
|
311 |
|
|
|
312 |
## XML-RPC for PHP version 4.9.3 - 2022/12/20
|
|
|
313 |
|
|
|
314 |
* improved: avoid stalling the webserver when using the debugger with the php cli-webserver and testing the demo
|
|
|
315 |
server within the same install
|
|
|
316 |
|
|
|
317 |
* improved: allow installation of the jsxmlrpc library within the debugger folder via composer or npm to enable the
|
|
|
318 |
visual-editing capabilities of the debugger, as this works well when the debugger is used as web-root (target usage
|
|
|
319 |
scenario being f.e. using the php cli-webserver to run the debugger)
|
|
|
320 |
|
|
|
321 |
|
|
|
322 |
## XML-RPC for PHP version 4.9.2 - 2022-12-18
|
|
|
323 |
|
|
|
324 |
* security fix: removed the possibility of an XSS attack in the debugger.
|
|
|
325 |
Since the debugger is not designed to be exposed to end users but only to the developers using this library, and in
|
|
|
326 |
the default configuration it is not exposed to requests from the web, the severity of this issue can be considered low.
|
|
|
327 |
|
|
|
328 |
* improved: the debugger now uses jsxmlrpc lib version 0.6. It loads it from a cdn rather than locally.
|
|
|
329 |
It also can make use of a 2nd constant to help telling it where the visual-editor form the jsxmlrpc lib is located,
|
|
|
330 |
in case its path on disk relative to the debugger and its url relative to the web root do not match.
|
|
|
331 |
|
|
|
332 |
|
|
|
333 |
## XML-RPC for PHP version 4.9.1 - 2022-12-12
|
|
|
334 |
|
|
|
335 |
* fixed: php warnings on php 8.2. This includes preferring usage of mbstring for converting between Latin1 and UTF-8
|
|
|
336 |
|
|
|
337 |
* improved: CI tests now also run on php 8.2
|
|
|
338 |
|
|
|
339 |
|
|
|
340 |
## XML-RPC for PHP version 4.9.0 - 2022/11/28
|
|
|
341 |
|
|
|
342 |
* security fix: hardened the `Client::send()` method against misuse of the `$method` argument (issue #81).
|
|
|
343 |
Abusing its value, it was possible to force the client to _access local files_ or _connect to undesired urls_ instead
|
|
|
344 |
of the intended target server's url (the one used in the Client constructor).
|
|
|
345 |
|
|
|
346 |
This weakness only affects installations where all the following conditions apply, at the same time:
|
|
|
347 |
|
|
|
348 |
- the xmlrpc Client is used, ie. not xmlrpc servers
|
|
|
349 |
- untrusted data (eg. data from remote users) is used as value for the `$method` argument of method `Client::send()`,
|
|
|
350 |
in conjunction with conditions which trigger usage of curl as http transport (ie. either using the https, http11 or
|
|
|
351 |
http2 protocols, or calling `Client::setUseCurl()` beforehand)
|
|
|
352 |
- either have set the Clients `return_type` property to 'xml', or make the resulting Response's object `httpResponse`
|
|
|
353 |
member, which is intended to be used for debugging purposes only, available to 3rd parties, eg. by displaying it to
|
|
|
354 |
the end user or serializing it in some storage (note that the same data can also be accessed via magic property
|
|
|
355 |
`Response::raw_data`, and in the Request's `httpResponse` member)
|
|
|
356 |
|
|
|
357 |
This is most likely a very uncommon usage scenario, and as such the severity of this issue can be considered low.
|
|
|
358 |
|
|
|
359 |
If it is not possible to upgrade to this release of the library at this time, a proactive security measure, to avoid
|
|
|
360 |
the Client accessing any local file on the server which hosts it, is to add the following call to your code:
|
|
|
361 |
|
|
|
362 |
$client->setCurlOptions([CURLOPT_PROTOCOLS, CURLPROTO_HTTPS|CURLPROTO_HTTP]);
|
|
|
363 |
|
|
|
364 |
* security fix: hardened the `Wrapper::buildClientWrapperCode` method's code generation against _code injection_ via
|
|
|
365 |
usage of a malevolent `$client` argument (issue #80).
|
|
|
366 |
|
|
|
367 |
In order for this weakness to be exploited, the following conditions have to apply, at the same time:
|
|
|
368 |
|
|
|
369 |
- method `Wrapper::buildClientWrapperCode`, or any methods which depend on it, such as `Wrapper::wrapXmlrpcServer`,
|
|
|
370 |
`Wrapper::wrapXmlrpcMethod` or `Wrapper::buildWrapMethodSource` must be in use. Note that they are _not_ used by
|
|
|
371 |
default in either the Client or Server classes provided by the library; the developer has to specifically make use
|
|
|
372 |
of them in his/her own code
|
|
|
373 |
- the `$client` argument to either of those methods should have been built with malicious data, ie. data controlled
|
|
|
374 |
by a 3rd party, passed to its constructor call
|
|
|
375 |
|
|
|
376 |
This is most likely an uncommon usage scenario, and as such the severity of this issue can be considered low.
|
|
|
377 |
|
|
|
378 |
*NB* the graphical debugger which is shipped as part of the library is vulnerable to this, when used with the option
|
|
|
379 |
"Generate stub for method call" selected. In that case, the debugger will _display_ but not _execute_ the
|
|
|
380 |
malicious code, which would have to be provided via carefully crafted values for the "Address" and "Path" inputs.
|
|
|
381 |
|
|
|
382 |
The attack scenario in this case is that a developer copies into his/her own source code the php snippet generated
|
|
|
383 |
by the debugger, in a situation where the debugger is used with "Address"/"Path" input values supplied by a 3rd party.
|
|
|
384 |
The malicious payload in the "Address"/"Path" input values should be easily recognized as suspicious by any barely
|
|
|
385 |
proficient developer, as it resembles a bog-standard injection attack.
|
|
|
386 |
It goes without saying that a responsible developer should not blindly copy and paste into his/her own code anything
|
|
|
387 |
generated by a 3rd party tool, such as the phpxmlrpc debugger, without giving it at least a cursory scan.
|
|
|
388 |
|
|
|
389 |
* fixed: a php warning on php 8 when parsing responses which do not have a Content-Type header (issue #104)
|
|
|
390 |
|
|
|
391 |
* fixed: added a missing html-escaping call in demo file `introspect.php`
|
|
|
392 |
|
|
|
393 |
* fixed: decoding of responses with latin-1 charset declared in the xml prolog but not in http headers, when on php 5.4, 5.5
|
|
|
394 |
|
|
|
395 |
* fixed: DateTimeInterface is not present in php 5.4 (error introduced in ver. 4.8.1)
|
|
|
396 |
|
|
|
397 |
* fixed: use of uninitialized var when accessing nonexisting member of legacy class `xmlrpc_server` - thanks SonarQube
|
|
|
398 |
|
|
|
399 |
* new: the Client class now supports making calls which follow http redirections (issue #77). For that to work, use this code:
|
|
|
400 |
|
|
|
401 |
$client->setUseCurl(\PhpXmlRpc\Client::USE_CURL_ALWAYS);
|
|
|
402 |
$client->setCurlOptions([CURLOPT_FOLLOWLOCATION => true, CURLOPT_POSTREDIR => 3]);
|
|
|
403 |
|
|
|
404 |
* new: allow users of the library to get more fine-grained information about errors in parsing received responses by
|
|
|
405 |
overriding the integer value of `PhpXmlRpc::$xmlrpcerr['invalid_xml']`, `PhpXmlRpc::$xmlrpcerr['xml_not_compliant']`,
|
|
|
406 |
`PhpXmlRpc::$xmlrpcerr['xml_parsing_error']` and the equivalent `PhpXmlRpc::$xmlrpcstr` strings (feature req. #101)
|
|
|
407 |
|
|
|
408 |
* improved: added the HTTP/2 protocol to the debugger
|
|
|
409 |
|
|
|
410 |
* improved: CI tests now run on php versions 5.4 and 5.5, besides all more recent ones
|
|
|
411 |
|
|
|
412 |
* improved: the test container for local testing now defaults to php 7.4 on ubuntu 20 focal
|
|
|
413 |
|
|
|
414 |
|
|
|
415 |
## XML-RPC for PHP version 4.8.1 - 2022/11/10
|
|
|
416 |
|
|
|
417 |
* improved: remove warnings with php 8.1 due to usage of `strftime` (issue #103)
|
|
|
418 |
|
|
|
419 |
* improved: cast correctly php objects sporting `DateTimeInterface` to phpxmlrpc datetime values
|
|
|
420 |
|
|
|
421 |
|
|
|
422 |
## XML-RPC for PHP version 4.8.0 - 2022/6/20
|
|
|
423 |
|
|
|
424 |
* fixed: the `benchmark.php` file had seen some tests accidentally dropped
|
|
|
425 |
|
|
|
426 |
* improved: added method `Client::prepareCurlHandle`, to make it easier to send multiple requests in parallel when using
|
|
|
427 |
curl and the server does not support `system.multicall`. See new demo file `parallel.php` for how this can be done.
|
|
|
428 |
|
|
|
429 |
* fixed: error 'Class "PhpXmlRpc\Exception\PhpXmlrpcException" not found' when including `xmlrpc.inc` and on php 8.1
|
|
|
430 |
(might also happen on other php versions) (issue #99)
|
|
|
431 |
|
|
|
432 |
|
|
|
433 |
## XML-RPC for PHP version 4.7.2 - 2022/5/25
|
|
|
434 |
|
|
|
435 |
* modified the strings used to tell the client to use http/2: to avoid users mistaking 'http2' for the preferred value,
|
|
|
436 |
we switched to using `h2` and `h2c`
|
|
|
437 |
|
|
|
438 |
* improved: the `benchmark.php` file does now also test calls using https and http/2 protocols
|
|
|
439 |
|
|
|
440 |
|
|
|
441 |
## XML-RPC for PHP version 4.7.1 - 2022/5/25
|
|
|
442 |
|
|
|
443 |
* fixed: http/2 on non-https requests (known as h2c) works in either "prior-knowledge" mode or "upgrade" mode.
|
|
|
444 |
Given the fact that "upgrade" mode is not compatible with POST requests, we switched to using "prior-knowledge" mode
|
|
|
445 |
for requests sent with the `h2c` argument passed to the client's constructor or `send` method.
|
|
|
446 |
NB: this means that requests sent with `h2c` are only compatible with servers and proxies known to be http/2 compliant.
|
|
|
447 |
|
|
|
448 |
|
|
|
449 |
## XML-RPC for PHP version 4.7.0 - 2022/5/25
|
|
|
450 |
|
|
|
451 |
* new: HTTP/2 is supported by both the Client and Server components (with the php cURL extension being required to use
|
|
|
452 |
it client-side) (issue #94).
|
|
|
453 |
To force the client to use http/2 over tls or http/2 over tcp requests, pass `h2` or `h2c` as 3rd argument to `Client::send`.
|
|
|
454 |
|
|
|
455 |
|
|
|
456 |
## XML-RPC for PHP version 4.6.1 - 2022/2/15
|
|
|
457 |
|
|
|
458 |
* fixed: one php warning with php 8 and up (issue #97)
|
|
|
459 |
|
|
|
460 |
|
|
|
461 |
## XML-RPC for PHP version 4.6.0 - 2021/12/9
|
|
|
462 |
|
|
|
463 |
* fixed: compatibility with php 8.1
|
|
|
464 |
|
|
|
465 |
* improved: when encoding utf-8 text into us-ascii xml, use character entity references for characters number 0-31
|
|
|
466 |
(ascii non printable characters), as we were already doing when encoding ISO-8859-1 text into us-ascii xml
|
|
|
467 |
|
|
|
468 |
* new: method `Server::getDispatchMap()`. Useful for non-child classes which want to f.e. introspect the server
|
|
|
469 |
|
|
|
470 |
* new: increase flexibility in class composition by adopting a Dependency Injection (...ish) pattern:
|
|
|
471 |
it is now possible to swap out the Logger, XMLParser and Charset classes with similar ones of your own making.
|
|
|
472 |
Example code:
|
|
|
473 |
|
|
|
474 |
// 1. create an instance of a custom character encoder
|
|
|
475 |
// $myCharsetEncoder = ...
|
|
|
476 |
// 2. then use it while serializing a Request:
|
|
|
477 |
Request::setCharsetEncoder($myCharsetEncoder);
|
|
|
478 |
$request->serialize($funkyCharset);
|
|
|
479 |
|
|
|
480 |
* new: method `XMLParser::parse()` acquired a 4th argument
|
|
|
481 |
|
|
|
482 |
* new: method `Wrapper::wrapPhpClass` allows to customize the names of the phpxmlrpc methods by stripping the original
|
|
|
483 |
class name and accompanying namespace and replace it with a user-defined prefix, via option `replace_class_name`
|
|
|
484 |
|
|
|
485 |
* new: `Response` constructor gained a 4th argument
|
|
|
486 |
|
|
|
487 |
* deprecated: properties `Response::hdrs`, `Response::_cookies`, `Response::raw_data`. Use `Response::httpResponse()` instead.
|
|
|
488 |
That method returns an array which also holds the http response's status code - useful in case of http errors.
|
|
|
489 |
|
|
|
490 |
* deprecated: method `Request::createPayload`. Use `Request::serialize` instead
|
|
|
491 |
|
|
|
492 |
* deprecated: property `Request::httpResponse`
|
|
|
493 |
|
|
|
494 |
* improved: `Http::parseResponseHeaders` now throws a more specific exception in case of http errors
|
|
|
495 |
|
|
|
496 |
* improved: Continuous Integration is now running on Github Actions instead of Travis
|
|
|
497 |
|
|
|
498 |
|
|
|
499 |
## XML-RPC for PHP version 4.5.2 - 2021/1/11
|
|
|
500 |
|
|
|
501 |
* improved: better phpdocs in the php code generated by the Wrapper class
|
|
|
502 |
|
|
|
503 |
* improved: debugger favicon and page title when used from the phpjsonrpc library
|
|
|
504 |
|
|
|
505 |
* fixed: allow `Encoder::decode` to properly support different target character sets for polyfill-xmlrpc decode functions
|
|
|
506 |
|
|
|
507 |
* improved: allow usage of 'epivals' for the 'parameters_type' member of methods definitions in the Server dispatch map
|
|
|
508 |
|
|
|
509 |
|
|
|
510 |
## XML-RPC for PHP version 4.5.1 - 2021/1/3
|
|
|
511 |
|
|
|
512 |
* improved: made it easier to subclass the Helper\Charset class by allowing `instance` to use late static binding
|
|
|
513 |
|
|
|
514 |
* fixed: reinstated access to xmlrpc_server->dmap (for users of the v3 API)
|
|
|
515 |
|
|
|
516 |
* fixed: method `xmlrpc_encode_entitites` (for users of the v3 API)
|
|
|
517 |
|
|
|
518 |
* improved: split the code of the demo server in multiple files, describing better the purpose of each
|
|
|
519 |
|
|
|
520 |
|
|
|
521 |
## XML-RPC for PHP version 4.5.0 - 2020/12/31
|
|
|
522 |
|
|
|
523 |
* new: it is now possible to control the precision used when serializing DOUBLE values via usage of
|
|
|
524 |
`PhpXmlRpc::$xmlpc_double_precision`
|
|
|
525 |
|
|
|
526 |
* fixed: `Encoder::encode` would not correctly encode DateTime and DateTimeImmutable objects
|
|
|
527 |
|
|
|
528 |
* improvements to the `Helper\Date` class in rejecting invalid date strings
|
|
|
529 |
|
|
|
530 |
* improvements to the `Wrapper` class in identifying required arguments types from source code phpdoc: support 'array[]',
|
|
|
531 |
'DateTime' and 'DateTimeImmutable'
|
|
|
532 |
|
|
|
533 |
* improvements to the support of the XMLRPC extension emulation (now provided by the phpxmlrpc/polyfill-xmlrpc package)
|
|
|
534 |
|
|
|
535 |
* minor improvements to the `Charset` helper: it now loads character set conversion tables on demand, leading to
|
|
|
536 |
slightly lower memory usage and faster execution time when using UTF-8 everywhere.
|
|
|
537 |
NB: take care if you have subclassed it!
|
|
|
538 |
|
|
|
539 |
* new method: `Server::isSyscall` - mostly of use to Server subclasses and friend classes such as introspectors
|
|
|
540 |
|
|
|
541 |
* internal method `XMLParser::xmlrpc_ee` now accepts 3 states for its 3rd parameter instead of a bool
|
|
|
542 |
|
|
|
543 |
* improvements in the inline phpdoc: tagged many methods and class member as reserved for internal usage only
|
|
|
544 |
|
|
|
545 |
* minor improvements in the debugger to allow easier integration of phpxmlrpc/jsonrpc and friends
|
|
|
546 |
|
|
|
547 |
* reorganized the test suite to be more manageable
|
|
|
548 |
|
|
|
549 |
* removed obsolete files from the 'extras' folder; updated and moved to the 'demo' folders the perl and python
|
|
|
550 |
client scripts; moved benchmark.php and verify_compat.php to the 'extras' folder
|
|
|
551 |
|
|
|
552 |
|
|
|
553 |
## XML-RPC for PHP version 4.4.3 - 2020/12/17
|
|
|
554 |
|
|
|
555 |
* fixed: compatibility with PHP 8.0 (fixes to the debugger, to the server's 'system.methodHelp' method and to the
|
|
|
556 |
PhpXmlRpc\Wrapper class).
|
|
|
557 |
Note that method `Value::structeach` has not been removed from the API, but it is _not_ supported when running
|
|
|
558 |
on PHP 8.0 or later - in that case it will always throw an Error.
|
|
|
559 |
|
|
|
560 |
* improvements to the test stack: it is now possible to run it via Docker besides Travis; avoid using _any_ external
|
|
|
561 |
server when running tests; run Travis tests also on php 8.0; bump PHPUnit versions in use
|
|
|
562 |
|
|
|
563 |
|
|
|
564 |
## XML-RPC for PHP version 4.4.2 - 2020/3/4
|
|
|
565 |
|
|
|
566 |
* fixed: `client->setCookie()` bug: cookie values that contain spaces are now properly encoded in a way that gets them
|
|
|
567 |
decoded back to spaces on the receiving end if the server running on php 7.4 (or does RFC-compliant cookie decoding).
|
|
|
568 |
Beforehand we were encoding spaces to '+' characters.
|
|
|
569 |
|
|
|
570 |
|
|
|
571 |
## XML-RPC for PHP version 4.4.1 - 2019/7/29
|
|
|
572 |
|
|
|
573 |
* fixed: allow handling huge xml messages (>=10MB) (issue #71)
|
|
|
574 |
|
|
|
575 |
* improved: make it easier to overtake the library's usage of `error_log`
|
|
|
576 |
|
|
|
577 |
|
|
|
578 |
## XML-RPC for PHP version 4.3.2 - 2019/5/27
|
|
|
579 |
|
|
|
580 |
* fixed: remove one php 7.2 warning when using the v3 api
|
|
|
581 |
|
|
|
582 |
* improved: the Travis tests are now run with all php versions from 5.6 to 7.3. We dropped tests with php 5.3, 5.4 and 5.5
|
|
|
583 |
|
|
|
584 |
|
|
|
585 |
## XML-RPC for PHP version 4.3.1 - 2018/1/20
|
|
|
586 |
|
|
|
587 |
* fixed: error when using https in non-curl mode
|
|
|
588 |
|
|
|
589 |
* fixed: compatibility of tests with php 7.2
|
|
|
590 |
|
|
|
591 |
* fixed: html injection in sample code
|
|
|
592 |
|
|
|
593 |
* fixed: warnings emitted by the *legacy* server in xmlrpcs.inc
|
|
|
594 |
|
|
|
595 |
* fixed: encoding of php variables of type 'resource' when using xmlrpc_encode in php-compatibility mode
|
|
|
596 |
|
|
|
597 |
* fixed: bad html tag in sample code
|
|
|
598 |
|
|
|
599 |
* improved: text of error messages
|
|
|
600 |
|
|
|
601 |
|
|
|
602 |
## XML-RPC for PHP version 4.3.0 - 2017/11/6
|
|
|
603 |
|
|
|
604 |
* fixed: compatibility with Basic/Digest/NTLM auth when using client in cURL mode (issue #58)
|
|
|
605 |
|
|
|
606 |
* improved: added unit tests for Basic and Digest http auth. Also improved tests suite
|
|
|
607 |
|
|
|
608 |
* new: allow to force usage of curl for http 1.0 calls, as well as plain socket for https calls, via the method
|
|
|
609 |
`Client::setUseCurl()`
|
|
|
610 |
|
|
|
611 |
|
|
|
612 |
## XML-RPC for PHP version 4.2.2 - 2017/10/15
|
|
|
613 |
|
|
|
614 |
* fixed: compatibility with Lighttpd target servers when using client in cURL mode and request body size > 1024 bytes
|
|
|
615 |
(issue #56)
|
|
|
616 |
|
|
|
617 |
|
|
|
618 |
## XML-RPC for PHP version 4.2.1 - 2017/9/3
|
|
|
619 |
|
|
|
620 |
* fixed: compatibility with php 7.2 (issue #55)
|
|
|
621 |
|
|
|
622 |
|
|
|
623 |
## XML-RPC for PHP version 4.2.0 - 2017/6/30
|
|
|
624 |
|
|
|
625 |
* improved: allow also `DateTimeImmutable` objects to be detected as a date when encoding
|
|
|
626 |
|
|
|
627 |
|
|
|
628 |
## XML-RPC for PHP version 4.1.1 - 2016/10/1
|
|
|
629 |
|
|
|
630 |
* fixed: error in server class: undefined function php_xmlrpc_encode (only triggered when not using the compatibility
|
|
|
631 |
shim with old versions)
|
|
|
632 |
|
|
|
633 |
|
|
|
634 |
## XML-RPC for PHP version 4.1.0 - 2016/6/26
|
|
|
635 |
|
|
|
636 |
* improved: Added support for receiving `<I8>` and `<EX:I8>` integers, sending `<I8>`
|
|
|
637 |
|
|
|
638 |
If php is compiled in 32 bit mode, and an i8 int is received from a 3rd party, and error will be emitted.
|
|
|
639 |
Integers sent from the library to 3rd parties can be encoded using the i8 tag, but default to using 'int' by default;
|
|
|
640 |
the developer will have to create values as i8 explicitly if needed.
|
|
|
641 |
The library does *not* check if an outgoing integer is too big to fit in 4 bytes and convert it to an i8 automatically.
|
|
|
642 |
|
|
|
643 |
|
|
|
644 |
## XML-RPC for PHP version 4.0.1 - 2016/3/27
|
|
|
645 |
|
|
|
646 |
* improved: all the API documentation has been moved out of the manual and into the source code phpdoc comments
|
|
|
647 |
|
|
|
648 |
* fixed: when the internal character set is set to UTF-8 and the client sends requests (or the server responses), too
|
|
|
649 |
many characters were encoded as numeric entities, whereas some, like åäö, needed not to be
|
|
|
650 |
|
|
|
651 |
* fixed: the 'valtyp' property of Response was not present in all cases; the ValType property had been added by error
|
|
|
652 |
and has been removed
|
|
|
653 |
|
|
|
654 |
|
|
|
655 |
## XML-RPC for PHP version 4.0.0 - 2016/1/20
|
|
|
656 |
|
|
|
657 |
This release does away with the past and starts a transition to modern-world php.
|
|
|
658 |
|
|
|
659 |
Code has been heavily refactored, taking care to preserve backwards compatibility as much as possible,
|
|
|
660 |
but some breackage is to be expected.
|
|
|
661 |
|
|
|
662 |
The minimum required php version has been increased to 5.3, even though we strongly urge you to use more recent versions.
|
|
|
663 |
|
|
|
664 |
PLEASE READ CAREFULLY THE NOTES BELOW to insure a smooth upgrade.
|
|
|
665 |
|
|
|
666 |
* new: introduction of namespaces and full OOP.
|
|
|
667 |
|
|
|
668 |
All php classes have been renamed and moved to separate files.
|
|
|
669 |
Class autoloading can now be done in accord with the PSR-4 standard.
|
|
|
670 |
All global variables and global functions have been removed.
|
|
|
671 |
Iterating over xmlrpc value objects is now easier thank to support for ArrayAccess and Traversable interfaces.
|
|
|
672 |
|
|
|
673 |
Backward compatibility is maintained via `lib/xmlrpc.inc`, `lib/xmlrpcs.inc` and `lib/xmlrpc_wrappers.inc`.
|
|
|
674 |
For more details, head on to doc/api_changes_v4.md
|
|
|
675 |
|
|
|
676 |
* changed: the default character encoding delivered from the library to your code is now utf-8.
|
|
|
677 |
It can be changed at any time setting a value to `PhpXmlRpc\PhpXmlRpc::$xmlrpc_internalencoding`
|
|
|
678 |
|
|
|
679 |
* improved: the library now accepts requests/responses sent using other character sets than UTF-8/ISO-8859-1/ASCII.
|
|
|
680 |
This only works when the mbstring php extension is enabled.
|
|
|
681 |
|
|
|
682 |
* improved: no need to call anymore `$client->setSSLVerifyHost(2)` to silence a curl warning when using https
|
|
|
683 |
with recent curl builds
|
|
|
684 |
|
|
|
685 |
* improved: the xmlrpcval class now supports the interfaces Countable and IteratorAggregate
|
|
|
686 |
|
|
|
687 |
* improved: a specific option allows users to decide the version of SSL to use for https calls.
|
|
|
688 |
This is useful f.e. for the testing suite, when the server target of calls has no proper ssl certificate,
|
|
|
689 |
and the cURL extension has been compiled with GnuTLS (such as on Travis VMs)
|
|
|
690 |
|
|
|
691 |
* improved: the function `wrap_php_function()` now can be used to wrap closures (it is now a method btw)
|
|
|
692 |
|
|
|
693 |
* improved: all wrap_something() functions now return a closure by default instead of a function name
|
|
|
694 |
|
|
|
695 |
* improved: debug messages are not html-escaped any more when executing from the command line
|
|
|
696 |
|
|
|
697 |
* improved: the library is now tested using Travis ( https://travis-ci.org/ ).
|
|
|
698 |
Tests are executed using all php versions from 5.3 to 7.2; code-coverage information
|
|
|
699 |
is generated using php 5.6 and uploaded to both Code Coverage and Scrutinizer online services
|
|
|
700 |
|
|
|
701 |
* improved: phpunit is now installed via Composer, not bundled anymore
|
|
|
702 |
|
|
|
703 |
* improved: when phpunit is used to generate code-coverage data, the code executed server-side is accounted for
|
|
|
704 |
|
|
|
705 |
* improved: the test suite has basic checks for the debugger and demo files
|
|
|
706 |
|
|
|
707 |
* improved: more tests in the test suite
|
|
|
708 |
|
|
|
709 |
* fixed: the server would not reset the user-set debug messages between subsequent `service()` calls
|
|
|
710 |
|
|
|
711 |
* fixed: the server would not reset previous php error handlers when an exception was thrown by user code and
|
|
|
712 |
exception_handling set to 2
|
|
|
713 |
|
|
|
714 |
* fixed: the server would fail to decode a request with ISO-8859-1 payload and character set declaration in the xml
|
|
|
715 |
prolog only
|
|
|
716 |
|
|
|
717 |
* fixed: the client would fail to decode a response with ISO-8859-1 payload and character set declaration in the xml
|
|
|
718 |
prolog only
|
|
|
719 |
|
|
|
720 |
* fixed: the function `decode_xml()` would not decode an xml with character set declaration in the xml prolog
|
|
|
721 |
|
|
|
722 |
* fixed: the client can now successfully call methods using ISO-8859-1 or UTF-8 characters in their name
|
|
|
723 |
|
|
|
724 |
* fixed: the debugger would fail sending a request with ISO-8859-1 payload (it missed the character set declaration).
|
|
|
725 |
It would have a hard time coping with ISO-8859-1 in other fields, such as e.g. the remote method name
|
|
|
726 |
|
|
|
727 |
* fixed: the debugger would generate a bad payload via the 'load method synopsis' button for signatures containing NULL
|
|
|
728 |
or undefined parameters
|
|
|
729 |
|
|
|
730 |
* fixed: the debugger would generate a bad payload via the 'load method synopsis' button for methods with multiple
|
|
|
731 |
signatures
|
|
|
732 |
|
|
|
733 |
* improved: the debugger is displayed using UTF-8, making it more useful to debug any kind of service
|
|
|
734 |
|
|
|
735 |
* improved: echo all debug messages even when there are characters in them which php deems to be in a wrong encoding;
|
|
|
736 |
previously those messages would just disappear (this is visible e.g. in the debugger)
|
|
|
737 |
|
|
|
738 |
* changed: debug info handling
|
|
|
739 |
|
|
|
740 |
- at debug level 1, the rebuilt php objects are not dumped to screen (server-side already did that)
|
|
|
741 |
- at debug level 1, curl communication info are not dumped to screen
|
|
|
742 |
- at debug level 1, the tests echo payloads of failures; at debug level 2 all payloads
|
|
|
743 |
|
|
|
744 |
* improved: makefiles have been replaced with a php_based pakefile
|
|
|
745 |
|
|
|
746 |
* improved: the source for the manual is stored in AsciiDoc format, which can be displayed natively by GitHub
|
|
|
747 |
with nice html formatting. Also, the HTML version generated by hand and bundled in tarballs is much nicer
|
|
|
748 |
to look at than previous versions
|
|
|
749 |
|
|
|
750 |
* improved: all PHP code is now formatted according to the PSR-2 standard
|
|
|
751 |
|
|
|
752 |
|
|
|
753 |
## XML-RPC for PHP version 3.0.0 - 2014/6/15
|
|
|
754 |
|
|
|
755 |
This release corrects all bugs that have been reported and successfully reproduced since
|
|
|
756 |
version 3.0.0 beta.
|
|
|
757 |
|
|
|
758 |
The requirements have increased to php 5.1.0 - which is still way older than what you should be running for any serious
|
|
|
759 |
purpose, really.
|
|
|
760 |
|
|
|
761 |
It also is the first release to be installable via Composer.
|
|
|
762 |
|
|
|
763 |
See the Changelog file or the pdf docs for a complete list of changes.
|
|
|
764 |
|
|
|
765 |
|
|
|
766 |
## XML-RPC for PHP version 3.0.0 beta - 2009/09/05
|
|
|
767 |
|
|
|
768 |
This is the first release of the library to only support PHP 5.
|
|
|
769 |
Some legacy code has been removed, and support for features such as exceptions and DateTime objects introduced.
|
|
|
770 |
|
|
|
771 |
The "beta" tag is meant to indicate the fact that the refactoring has been more widespread than in precedent releases
|
|
|
772 |
and that more changes are likely to be introduced with time - the library is still considered to be production quality.
|
|
|
773 |
|
|
|
774 |
* improved: removed all usage of php functions deprecated in php 5.3, usage of assign-by-ref when creating new objects
|
|
|
775 |
etc...
|
|
|
776 |
* improved: add support for the <ex:nil/> tag used by the apache library, both in input and output
|
|
|
777 |
* improved: add support for DateTime objects in both in php_xmlrpc_encode and as parameter for constructor of xmlrpcval
|
|
|
778 |
* improved: add support for timestamps as parameter for constructor of xmlrpcval
|
|
|
779 |
* improved: add option 'dates_as_objects' to php_xmlrpc_decode to return dateTime objects for xmlrpc datetimes
|
|
|
780 |
* improved: add new method SetCurlOptions to xmrlpc_client to allow extra flexibility in tweaking http config, such as
|
|
|
781 |
explicitly binding to an ip address
|
|
|
782 |
* improved: add new method setUserAgent to xmrlpc_client to allow having different user-agent http headers
|
|
|
783 |
* improved: add a new member variable in server class to allow fine-tuning of the encoding of returned values when the
|
|
|
784 |
server is in 'phpvals' mode
|
|
|
785 |
* improved: allow servers in 'xmlrpcvals' mode to also register plain php functions by defining them in the dispatch map
|
|
|
786 |
with an added option
|
|
|
787 |
* improved: catch exceptions thrown during execution of php functions exposed as methods by the server
|
|
|
788 |
* fixed: bad encoding if the same object is encoded twice using php_xmlrpc_encode
|
|
|
789 |
|
|
|
790 |
|
|
|
791 |
## XML-RPC for PHP version 2.2.2 - 2009/03/16
|
|
|
792 |
|
|
|
793 |
This release corrects all bugs that have been reported and successfully reproduced since version 2.2.1.
|
|
|
794 |
Regardless of the intimidating message about dropping PHP 4 support, it still does support that ancient, broken and
|
|
|
795 |
insecure platform.
|
|
|
796 |
|
|
|
797 |
* fixed: php warning when receiving 'false' in a bool value
|
|
|
798 |
* fixed: improve robustness of the debugger when parsing weird results from non-compliant servers
|
|
|
799 |
* fixed: format floating point values using the correct decimal separator even when php locale is set to one that uses
|
|
|
800 |
comma
|
|
|
801 |
* fixed: use feof() to test if socket connections are to be closed instead of the number of bytes read (rare bug when
|
|
|
802 |
communicating with some servers)
|
|
|
803 |
* fixed: be more tolerant in detection of charset in http headers
|
|
|
804 |
* fixed: fix encoding of UTF-8 chars outside the BMP plane
|
|
|
805 |
* fixed: fix detection of zlib.output_compression
|
|
|
806 |
* improved: allow the add_to_map server method to add docs for single params too
|
|
|
807 |
* improved: added the possibility to wrap for exposure as xmlrpc methods plain php class methods, object methods and
|
|
|
808 |
even whole classes
|
|
|
809 |
|
|
|
810 |
|
|
|
811 |
## XML-RPC for PHP version 2.2.1 - 2008/03/06
|
|
|
812 |
|
|
|
813 |
This release corrects all bugs that have been reported and successfully reproduced.
|
|
|
814 |
It is the last release of the library that will support PHP 4.
|
|
|
815 |
|
|
|
816 |
* fixed: work around bug in php 5.2.2 which broke support of HTTP_RAW_POST_DATA
|
|
|
817 |
* fixed: is_dir parameter of setCaCertificate() method is reversed
|
|
|
818 |
* fixed: a php warning in xmlrpc_client creator method
|
|
|
819 |
* fixed: parsing of '1e+1' as valid float
|
|
|
820 |
* fixed: allow errorlevel 3 to work when prev. error handler was a static method
|
|
|
821 |
* fixed: usage of client::setcookie() for multiple cookies in non-ssl mode
|
|
|
822 |
* improved: support for CP1252 charset is not part or the library but almost possible
|
|
|
823 |
* improved: more info when curl is enabled and debug mode is on
|
|
|
824 |
|
|
|
825 |
|
|
|
826 |
## XML-RPC for PHP version 2.2 - 2007/02/25
|
|
|
827 |
|
|
|
828 |
This release corrects a couple of bugs and adds a few minor features.
|
|
|
829 |
|
|
|
830 |
* fixed: debugger errors on php installs with magic_quotes_gpc on
|
|
|
831 |
* fixed: support for https connections via proxy
|
|
|
832 |
* fixed: wrap_xmlrpc_method() generated code failed to properly encode php objects
|
|
|
833 |
* improved: slightly faster encoding of data which is internally UTF-8
|
|
|
834 |
* improved: debugger always generates a 'null' id for jsonrpc if user omits it
|
|
|
835 |
* new: debugger can take advantage of a graphical value builder (it has to be downloaded separately, as part of
|
|
|
836 |
jsxmlrpc package)
|
|
|
837 |
* new: support for the <NIL/> xmlrpc extension
|
|
|
838 |
* new: server support for the system.getCapabilities xmlrpc extension
|
|
|
839 |
* new: wrap_xmlrpc_method() accepts two new options: debug and return_on_fault
|
|
|
840 |
|
|
|
841 |
|
|
|
842 |
## XML-RPC for PHP version 2.1 - 2006/08/28
|
|
|
843 |
|
|
|
844 |
This release corrects quite a few bugs and adds some interesting new features.
|
|
|
845 |
There is a minor security enhancement and overall speedup too.
|
|
|
846 |
|
|
|
847 |
It has been tested with PHP 4.0.5 up to 4.4.4 and 5.1.5.
|
|
|
848 |
Please note that 404pl1 is NOT supported, and has not been since 2.0.
|
|
|
849 |
|
|
|
850 |
*** PLEASE READ CAREFULLY BELOW ***
|
|
|
851 |
|
|
|
852 |
CHANGES THAT MIGHT AFFECT DEPLOYED APPLICATIONS:
|
|
|
853 |
|
|
|
854 |
The wrap_php_function and wrap_xmlrpc_method functions have been moved out of the base library file xmlrpc.inc into a
|
|
|
855 |
file of their own: xmlrpc_wrappers.inc.
|
|
|
856 |
You will have to include() / require() it in your scripts if you have been using those functions.
|
|
|
857 |
|
|
|
858 |
For increased security, the automatic rebuilding of php object instances out of received xmlrpc structs in
|
|
|
859 |
wrap_xmlrpc_method() has been disabled (but it can be optionally reenabled).
|
|
|
860 |
|
|
|
861 |
The constructor of xmlrpcval() values has seen major changes, and it will not throw a php warning anymore when invoked
|
|
|
862 |
using an unknown xmlrpc type: the error will only be written to php error log. Also, new xmlrpcval('true', 'boolean')
|
|
|
863 |
is not supported anymore.
|
|
|
864 |
|
|
|
865 |
MAJOR IMPROVEMENTS:
|
|
|
866 |
|
|
|
867 |
The new function php_xmlrpc_decode_xml() will take the xml representation of either an xmlrpc request, response or
|
|
|
868 |
single value and return the corresponding php-xmlrpc object instance.
|
|
|
869 |
|
|
|
870 |
Both wrap_php_function() and wrap_xmlrpc_method() functions accept many more options to fine tune their behaviour,
|
|
|
871 |
including one to return the php code to be saved and later used as standalone php script.
|
|
|
872 |
|
|
|
873 |
A new function wrap_xmlrpc_server() has been added, to wrap all (or some) of the methods exposed by a remote xmlrpc
|
|
|
874 |
server into a php class.
|
|
|
875 |
|
|
|
876 |
Lib internals have been modified to provide better support for grafting extra functionality on top of it. Stay tuned for
|
|
|
877 |
future releases of the EXTRAS package.
|
|
|
878 |
|
|
|
879 |
Last but not least a new file has been added: verify_compat.php, to help users diagnose the level of compliance of the
|
|
|
880 |
current php install with the library.
|
|
|
881 |
|
|
|
882 |
CHANGELOG IN DETAIL:
|
|
|
883 |
|
|
|
884 |
* fixed bug 1311927: client not playing nice with some proxy/firewall on ports != 80
|
|
|
885 |
* fixed bug 1334340: all ereg_ functions have been replaced with corresponding preg_
|
|
|
886 |
* fixed bug: wrong handling of 'deflate' http encoding, both server and client side
|
|
|
887 |
* fixed bug: sending compressed responses when php output compression is enabled was not working
|
|
|
888 |
* fixed bug: addarray() and addstruct() where not returning 1 when adding data to already initialized values
|
|
|
889 |
* fixed bug: non-ascii chars used in struct element names where not being encoded correctly
|
|
|
890 |
* restored compatibility with php 4.0.5 (for those poor souls still stuck on it)
|
|
|
891 |
* server->service() now returns either the payload or xmlrpcresp instance
|
|
|
892 |
* server->add_to_map() now accepts methods with no param definitions
|
|
|
893 |
* added new function: php_xmlrpc_decode_xml()
|
|
|
894 |
* added new function: wrap_xmlrpc_server()
|
|
|
895 |
* major improvements and security enhancements to wrap_php_function() and wrap_xmlrpc_method()
|
|
|
896 |
* documentation for single parameters of exposed methods can be added to the dispatch map (and turned into html docs in
|
|
|
897 |
conjunction with a future release of the extras package)
|
|
|
898 |
* full response payload is saved into xmlrpcresp object for further debugging
|
|
|
899 |
* stricter parsing of incoming xmlrpc messages: two more invalid cases are now detected (double data element inside
|
|
|
900 |
array and struct/array after scalar inside value element)
|
|
|
901 |
* debugger can now generate code that wraps a remote method into php function (works for jsonrpc, too)
|
|
|
902 |
* debugger has better support for being activated via a single GET call (for integration into other tools?)
|
|
|
903 |
* more logging of errors in a lot of situations
|
|
|
904 |
* javadoc documentation of lib files almost complete
|
|
|
905 |
* the usual amount of new testcases in the testsuite
|
|
|
906 |
* many performance tweaks and code cleanups
|
|
|
907 |
* added foundation for emulating the API of the xmlrpc extension (extras package needed)
|
|
|
908 |
|
|
|
909 |
|
|
|
910 |
## XML-RPC for PHP version 2.0 - 2006/04/24
|
|
|
911 |
|
|
|
912 |
I'm pleased to announce ## XML-RPC for PHP version 2.0, final.
|
|
|
913 |
|
|
|
914 |
With respect to the last release candidate, this release corrects a few small bugs and adds a couple of new features:
|
|
|
915 |
more authentication options (digest and ntlm for servers, ntlm for proxies, and some https custom certificates stuff);
|
|
|
916 |
all the examples have been reviewed and some demo files added, including a ready-made xmlrpc proxy (useful e.g. for
|
|
|
917 |
ajax calls, when the xmlrpc client is a browser); the server logs more warning messages for incorrect situations; both
|
|
|
918 |
client and server are more tolerant of commonly-found mistakes.
|
|
|
919 |
The debugger has been upgraded to reflect the new client capabilities.
|
|
|
920 |
|
|
|
921 |
In greater detail:
|
|
|
922 |
|
|
|
923 |
* fixed bug: method xmlrpcval::structmemexists($value) would not work
|
|
|
924 |
* fixed bug: wrap_xmlrpc_method would fail if invoked with a client object that has return_type=phpvals
|
|
|
925 |
* fixed bug: in case of call to client::multicall without fallback and server error
|
|
|
926 |
* fixed bug: recursive serialization of xmlrpcvals loosing specified UTF-8 charset
|
|
|
927 |
* fixed bug: serializing to ISO-8859-1 with php 5 would raise an error if non-ascii chars where found when decoding
|
|
|
928 |
* new: client can use NTLM and Digest authentication methods for https and http 1.1 connections; authentication to
|
|
|
929 |
proxy can be set to NTLM, too
|
|
|
930 |
* new: server tolerates user functions returning a single xmlrpcval object instead of an xmlrpcresp
|
|
|
931 |
* new: server does more checks for presence and correct return type of user coded method handling functions, and logs
|
|
|
932 |
inconsistencies to php error log
|
|
|
933 |
* new: client method SetCaCertificate($cert, $is_dir) to validate server against
|
|
|
934 |
* new: both server and client tolerate receiving 'true' and 'false' for bool values (which btw are not valid according
|
|
|
935 |
to the xmlrpc spec)
|
|
|
936 |
|
|
|
937 |
|
|
|
938 |
## XML-RPC for PHP version 2.0RC3 - 2006/01/22
|
|
|
939 |
|
|
|
940 |
This release corrects a few bugs and adds some interesting new features.
|
|
|
941 |
It has been tested with PHP up to 4.4.2 and 5.1.2.
|
|
|
942 |
|
|
|
943 |
* fixed bug: server not recognizing clients that declare support for http compression
|
|
|
944 |
* fixed bug: serialization of new xmlrpcval (8, 'string') when internal encoding
|
|
|
945 |
set to UTF-8
|
|
|
946 |
* fixed bug: serialization of new xmlrpcval ('hello', 'int') would produce
|
|
|
947 |
invalid xml-rpc
|
|
|
948 |
* new: let the server accept 'class::method' syntax in the dispatch map
|
|
|
949 |
* new: php_xmlrpc_decode() can decode xmlrpcmessage objects
|
|
|
950 |
* new: both client and server can specify a charset to be used for serializing
|
|
|
951 |
values instead of the default 'US-ASCII+xml-entities-for-other-characters'.
|
|
|
952 |
Values allowed: ISO-8859-1 and UTF-8
|
|
|
953 |
* new: the server object can register 'plain' php functions instead of functions
|
|
|
954 |
that accept a single parameter of type xmlrpcmsg. Faster, uses less memory
|
|
|
955 |
(but comes with minor drawbacks as well, read the manual for more details)
|
|
|
956 |
* new: client::setDebug(2) can be used to have the request payload printed to
|
|
|
957 |
screen before being sent
|
|
|
958 |
* new: server::service($data) lets user parse data other than POST body, for
|
|
|
959 |
easier testing / subclassing
|
|
|
960 |
* changed: framework-generated debug messages are sent back by the server base64
|
|
|
961 |
encoded, to avoid any charset/xml compatibility problem
|
|
|
962 |
* other minor fixes
|
|
|
963 |
|
|
|
964 |
The usual refactoring of a lot of (private) methods has taken place, with new
|
|
|
965 |
parameters added to some functions.
|
|
|
966 |
Javadoc documentation has been improved a lot.
|
|
|
967 |
The HTML documentation has been shuffled around a bit, hoping to give it a more
|
|
|
968 |
logical organization.
|
|
|
969 |
|
|
|
970 |
The experimental support for the JSON protocol has been removed, and will be
|
|
|
971 |
packaged as a separate download with some extra very interesting stuff (human
|
|
|
972 |
readable auto-generated documentation, anyone?).
|
|
|
973 |
|
|
|
974 |
|
|
|
975 |
## XML-RPC for PHP version 2.0RC2 - 2005/11/22
|
|
|
976 |
|
|
|
977 |
This release corrects a few bugs and adds basically one new method for better
|
|
|
978 |
HTTPS support:
|
|
|
979 |
|
|
|
980 |
* fixed two bugs that prevented xmlrpc calls to take place over https
|
|
|
981 |
* fixed two bugs that prevented proper recognition of xml character set
|
|
|
982 |
when it was declared inside the xml prologue
|
|
|
983 |
* added xmlrpc_client::setKey($key, $keypass) method, to allow using client
|
|
|
984 |
side certificates for https connections
|
|
|
985 |
* fixed bug that prevented proper serialization of string xmlrpcvals when
|
|
|
986 |
$xmlrpc_internalencoding was set to UTF-8
|
|
|
987 |
* fixed bug in xmlrpc_server::echoInput() (and marked method as deprecated)
|
|
|
988 |
* correctly set cookies/http headers into xmlrpcresp objects even when the
|
|
|
989 |
send() method call fails for some reason
|
|
|
990 |
* added a benchmark file in the testsuite directory
|
|
|
991 |
|
|
|
992 |
A couple of (private/protected) methods have been refactored, as well as a
|
|
|
993 |
couple of extra parameters added to some (private) functions - this has no
|
|
|
994 |
impact on the public API and should be of interest primarily to people extending
|
|
|
995 |
/ subclassing the lib.
|
|
|
996 |
|
|
|
997 |
There is also new, PARTIAL support for the JSON-RPC protocol, implemented in
|
|
|
998 |
two files in the extras dir (more info about json-rpc at http://json-rpc.org)
|
|
|
999 |
|
|
|
1000 |
|
|
|
1001 |
## XML-RPC for PHP version 2.0RC1 - 2005/10/03
|
|
|
1002 |
|
|
|
1003 |
I'm pleased to announce ## XML-RPC for PHP version 2.0, release candidate 1.
|
|
|
1004 |
|
|
|
1005 |
This release introduces so many new features it is almost impossible to list them
|
|
|
1006 |
here, making the library finally on pair with, if not more advanced than, any other
|
|
|
1007 |
similar offer (e.g. the PEAR XMLRPC package or the Incutio IXR library).
|
|
|
1008 |
No, really, trust me.
|
|
|
1009 |
|
|
|
1010 |
The minimum supported PHP version is now 4.2 - natively - or 4.0.4pl1 - by usage of
|
|
|
1011 |
a couple of compatibility classes (code taken from PEAR php_compat package).
|
|
|
1012 |
|
|
|
1013 |
The placement of files and directories in the distribution has been deeply modified,
|
|
|
1014 |
in the hope of making it more clear, now that the file count has increased.
|
|
|
1015 |
I hope you find it easy.
|
|
|
1016 |
|
|
|
1017 |
Support for "advanced" HTTP features such as cookies, proxies and keep-alives has
|
|
|
1018 |
been added at last.
|
|
|
1019 |
|
|
|
1020 |
It is now much easier to convert between xmlrpcval objects and php values, and
|
|
|
1021 |
in fact php_xmlrpc_encode and php_xmlrpc_decode are now the recommended methods
|
|
|
1022 |
for all cases, except when encoding base64 data.
|
|
|
1023 |
|
|
|
1024 |
Two new (experimental) functions have been added, allowing automagic conversion
|
|
|
1025 |
of a php function into an xmlrpc method to be exposed and vice-versa.
|
|
|
1026 |
|
|
|
1027 |
PHP objects can be now automatically serialized as xmlrpc struct values and
|
|
|
1028 |
correctly deserialized on the other end of the transmission, provided that the
|
|
|
1029 |
same class definition is present on both sides and no object members are of
|
|
|
1030 |
type resource.
|
|
|
1031 |
|
|
|
1032 |
A lot of the existing class methods have been overloaded with extra parameters
|
|
|
1033 |
or new functionality, and a few added ex-novo, making usage easier than ever.
|
|
|
1034 |
|
|
|
1035 |
A complete debugger solution is included in the distribution. It needs a web server
|
|
|
1036 |
to run (a freely available version of the same debugger is accessible online, it
|
|
|
1037 |
can be found at http://phpxmlrpc.sourceforge.net).
|
|
|
1038 |
|
|
|
1039 |
For a more detailed list of changes, please read carefully chapter 2 of the
|
|
|
1040 |
included documentation, or, even better, take a look at the source code, which
|
|
|
1041 |
is commented in javadoc style quite a bit.
|
|
|
1042 |
|
|
|
1043 |
|
|
|
1044 |
## XML-RPC for PHP version 1.2.1 - 2005/09
|
|
|
1045 |
|
|
|
1046 |
This release restores compatibility with PHP3, which had been broken in release 1.2.
|
|
|
1047 |
The only other changes are some minor documentation updates and removal of unused
|
|
|
1048 |
files that had been erroneously packed in 1.2.
|
|
|
1049 |
|
|
|
1050 |
## XML-RPC for PHP version 1.2 - 2005/08/14
|
|
|
1051 |
|
|
|
1052 |
This removes all use of eval(), which is a potential security problem.
|
|
|
1053 |
All users are encouraged to upgrade as soon as possible.
|
|
|
1054 |
As of this release we are no longer php3-compatible.
|
|
|
1055 |
|
|
|
1056 |
|
|
|
1057 |
## XML-RPC for PHP version 1.1.1 - 2005/06/30
|
|
|
1058 |
|
|
|
1059 |
This is a security vulnerability fix release.
|
|
|
1060 |
All users are invited to upgrade as soon as possible.
|
|
|
1061 |
|
|
|
1062 |
|
|
|
1063 |
## XML-RPC for PHP version 1.1 - 2005/05/03
|
|
|
1064 |
|
|
|
1065 |
I'm pleased to announce ## XML-RPC for PHP version 1.1
|
|
|
1066 |
It's taken two years to get to this point, but here we are, finally.
|
|
|
1067 |
|
|
|
1068 |
This is a bugfix and maintenance release. No major new features have been added.
|
|
|
1069 |
All known bugs have been ironed out, unless fixing would have meant breaking
|
|
|
1070 |
the API.
|
|
|
1071 |
The code has been tested with PHP 3, 4 and 5, even tough PHP 4 is the main
|
|
|
1072 |
development platform (and some warnings will be emitted when running PHP5).
|
|
|
1073 |
|
|
|
1074 |
Noteworthy changes include:
|
|
|
1075 |
|
|
|
1076 |
* do not clash any more with the EPI xmlrpc extension bundled with PHP 4 and 5
|
|
|
1077 |
* fixed the unicode/charset problems that have been plaguing the lib for years
|
|
|
1078 |
* proper parsing of int and float values prepended with zeroes or the '+' char
|
|
|
1079 |
* accept float values in exponential notation
|
|
|
1080 |
* configurable http user-agent string
|
|
|
1081 |
* use the same timeout on client socket reads as used for connecting
|
|
|
1082 |
* more explicative error messages in xmlrpcresponse in many cases
|
|
|
1083 |
* much more tolerant parsing of malformed http responses from xmlrpc servers
|
|
|
1084 |
* fixed memleak that prevented the client to be used in never-ending scripts
|
|
|
1085 |
* parse bigger xmlrpc messages without crashing (1MB in size or more)
|
|
|
1086 |
* be tolerant to xmlrpc responses generated on public servers that add
|
|
|
1087 |
javascript advertising at the end of hosted content
|
|
|
1088 |
* the lib generates quite a few less PHP warnings during standard operation
|
|
|
1089 |
|
|
|
1090 |
This is the last release that will support PHP 3.
|
|
|
1091 |
The next release will include better support for PHP 5 and (possibly) a slew of
|
|
|
1092 |
new features.
|
|
|
1093 |
|
|
|
1094 |
The changelog is available at:
|
|
|
1095 |
http://cvs.sourceforge.net/viewcvs.py/phpxmlrpc/xmlrpc/ChangeLog?view=markup
|
|
|
1096 |
|
|
|
1097 |
Please report bugs to the XML-RPC PHP mailing list or to the sourceforge project
|
|
|
1098 |
pages at http://sourceforge.net/projects/phpxmlrpc/
|
|
|
1099 |
|
|
|
1100 |
|
|
|
1101 |
## XML-RPC for PHP version 1.0
|
|
|
1102 |
|
|
|
1103 |
I'm pleased to announce ## XML-RPC for PHP version 1.0 (final). It's taken
|
|
|
1104 |
two years to get to the 1.0 point, but here we are, finally. The major change
|
|
|
1105 |
is re-licensing with the BSD open source license, a move from the custom
|
|
|
1106 |
license previously used.
|
|
|
1107 |
|
|
|
1108 |
After this release I expect to move the project to SourceForge and find
|
|
|
1109 |
another primary maintainer for the code. More details will follow to the
|
|
|
1110 |
mailing list.
|
|
|
1111 |
|
|
|
1112 |
It can be downloaded from http://xmlrpc.usefulinc.com/php.html
|
|
|
1113 |
|
|
|
1114 |
Comprehensive documentation is available in the distribution, but you
|
|
|
1115 |
can also browse it at http://xmlrpc.usefulinc.com/doc/
|
|
|
1116 |
|
|
|
1117 |
Bugfixes in this release include:
|
|
|
1118 |
|
|
|
1119 |
* Small fixes and tidying up.
|
|
|
1120 |
|
|
|
1121 |
New features include:
|
|
|
1122 |
|
|
|
1123 |
* experimental support for SSL via the curl extensions to PHP. Needs
|
|
|
1124 |
PHP 4.0.2 or greater, but not PHP 4.0.6 which has broken SSL support.
|
|
|
1125 |
|
|
|
1126 |
The changelog is available at: http://xmlrpc.usefulinc.com/ChangeLog.txt
|
|
|
1127 |
|
|
|
1128 |
Please report bugs to the XML-RPC PHP mailing list, of which more details are
|
|
|
1129 |
available at http://xmlrpc.usefulinc.com/list.html, or to
|
|
|
1130 |
<xmlrpc@usefulinc.com>.
|
|
|
1131 |
|
|
|
1132 |
|
|
|
1133 |
## XML-RPC for PHP version 1.0 beta 9
|
|
|
1134 |
|
|
|
1135 |
I'm pleased to announce ## XML-RPC for PHP version 1.0 beta 9. This is
|
|
|
1136 |
largely a bugfix release.
|
|
|
1137 |
|
|
|
1138 |
It can be downloaded from http://xmlrpc.usefulinc.com/php.html
|
|
|
1139 |
|
|
|
1140 |
Comprehensive documentation is available in the distribution, but you
|
|
|
1141 |
can also browse it at http://xmlrpc.usefulinc.com/doc/
|
|
|
1142 |
|
|
|
1143 |
Bugfixes in this release include:
|
|
|
1144 |
|
|
|
1145 |
* Fixed string handling bug where characters between a </string>
|
|
|
1146 |
and </value> tag were not ignored.
|
|
|
1147 |
|
|
|
1148 |
* Added in support for PHP's native boolean type.
|
|
|
1149 |
|
|
|
1150 |
New features include:
|
|
|
1151 |
|
|
|
1152 |
* new getval() method (experimental only) which has support for
|
|
|
1153 |
recreating nested arrays.
|
|
|
1154 |
* fledgling unit test suite
|
|
|
1155 |
* server.php has support for basic interop test suite
|
|
|
1156 |
|
|
|
1157 |
The changelog is available at: http://xmlrpc.usefulinc.com/ChangeLog.txt
|
|
|
1158 |
|
|
|
1159 |
Please test this as hard as possible and report bugs to the XML-RPC PHP
|
|
|
1160 |
mailing list, of which more details are available at
|
|
|
1161 |
http://xmlrpc.usefulinc.com/list.html, or to <xmlrpc@usefulinc.com>.
|
|
|
1162 |
|
|
|
1163 |
|
|
|
1164 |
## XML-RPC for PHP version 1.0 beta 8
|
|
|
1165 |
|
|
|
1166 |
I'm pleased to announce ## XML-RPC for PHP version 1.0 beta 8.
|
|
|
1167 |
|
|
|
1168 |
This release fixes several bugs and adds a couple of new helper
|
|
|
1169 |
functions. The most critical change in this release is that you can no
|
|
|
1170 |
longer print debug info in comments inside a server method -- you must
|
|
|
1171 |
now use the new xmlrpc_debugmsg() function.
|
|
|
1172 |
|
|
|
1173 |
It can be downloaded from http://xmlrpc.usefulinc.com/php.html
|
|
|
1174 |
|
|
|
1175 |
Comprehensive documentation is available in the distribution, but you
|
|
|
1176 |
can also browse it at http://xmlrpc.usefulinc.com/doc/
|
|
|
1177 |
|
|
|
1178 |
Bugfixes in this release include:
|
|
|
1179 |
|
|
|
1180 |
* fixed whitespace handling in values
|
|
|
1181 |
* correct sending of Content-length from the server
|
|
|
1182 |
|
|
|
1183 |
New features include:
|
|
|
1184 |
|
|
|
1185 |
* xmlrpc_debugmsg() method allows sending of debug info in comments in
|
|
|
1186 |
the return payload from a server
|
|
|
1187 |
|
|
|
1188 |
* xmlrpc_encode() and xmlrpc_decode() translate between xmlrpcval
|
|
|
1189 |
objects and PHP language arrays. They aren't suitable for all
|
|
|
1190 |
datatypes, but can speed up coding in simple scenarios. Thanks to Dan
|
|
|
1191 |
Libby for these.
|
|
|
1192 |
|
|
|
1193 |
The changelog is available at: http://xmlrpc.usefulinc.com/ChangeLog.txt
|
|
|
1194 |
|
|
|
1195 |
Please test this as hard as possible and report bugs to the XML-RPC PHP
|
|
|
1196 |
mailing list, of which more details are available at
|
|
|
1197 |
http://xmlrpc.usefulinc.com/list.html, or to <xmlrpc@usefulinc.com>.
|
|
|
1198 |
|
|
|
1199 |
|
|
|
1200 |
## XML-RPC for PHP version 1.0 beta 7
|
|
|
1201 |
|
|
|
1202 |
I'm pleased to announce ## XML-RPC for PHP version 1.0 beta 7. This is
|
|
|
1203 |
fixes some critical bugs that crept in. If it shows itself to be stable
|
|
|
1204 |
then it'll become the 1.0 release.
|
|
|
1205 |
|
|
|
1206 |
It can be downloaded from http://xmlrpc.usefulinc.com/php.html
|
|
|
1207 |
|
|
|
1208 |
Comprehensive documentation is available in the distribution, but you
|
|
|
1209 |
can also browse it at http://xmlrpc.usefulinc.com/doc/
|
|
|
1210 |
|
|
|
1211 |
Bugfixes in this release include:
|
|
|
1212 |
|
|
|
1213 |
* Passing of booleans should now work as expected
|
|
|
1214 |
* Dollar signs and backslashes in strings should pass OK
|
|
|
1215 |
* addScalar() now works properly to append to array vals
|
|
|
1216 |
|
|
|
1217 |
New features include:
|
|
|
1218 |
|
|
|
1219 |
* Added support for HTTP Basic authorization through the
|
|
|
1220 |
xmlrpc_client::setCredentials method.
|
|
|
1221 |
|
|
|
1222 |
* Added test script and method for verifying correct passing of
|
|
|
1223 |
booleans
|
|
|
1224 |
|
|
|
1225 |
The changelog is available at: http://xmlrpc.usefulinc.com/ChangeLog.txt
|
|
|
1226 |
|
|
|
1227 |
Please test this as hard as possible and report bugs to the XML-RPC PHP
|
|
|
1228 |
mailing list, of which more details are available at
|
|
|
1229 |
http://xmlrpc.usefulinc.com/list.html, or to <xmlrpc@usefulinc.com>.
|
|
|
1230 |
|
|
|
1231 |
|
|
|
1232 |
## XML-RPC for PHP version 1.0 beta 6
|
|
|
1233 |
|
|
|
1234 |
I'm pleased to announce ## XML-RPC for PHP version 1.0 beta 6. This is the
|
|
|
1235 |
final beta before the 1.0 release.
|
|
|
1236 |
|
|
|
1237 |
It can be downloaded from http://xmlrpc.usefulinc.com/php.html
|
|
|
1238 |
|
|
|
1239 |
Comprehensive documentation is available in the distribution, but you
|
|
|
1240 |
can also browse it at http://xmlrpc.usefulinc.com/doc/
|
|
|
1241 |
|
|
|
1242 |
New features in this release include:
|
|
|
1243 |
|
|
|
1244 |
* Perl and Python test programs for the demo server
|
|
|
1245 |
* Proper fault generation on a non-"200 OK" response from a remote host
|
|
|
1246 |
* Bugfixed base64 decoding
|
|
|
1247 |
* ISO8601 helper routines for translation to and from UNIX timestamps
|
|
|
1248 |
* reorganization of code to allow eventual integration of alternative
|
|
|
1249 |
transports
|
|
|
1250 |
|
|
|
1251 |
The changelog is available at: http://xmlrpc.usefulinc.com/ChangeLog.txt
|
|
|
1252 |
|
|
|
1253 |
Please test this as hard as possible and report bugs to the XML-RPC PHP
|
|
|
1254 |
mailing list, of which more details are available at
|
|
|
1255 |
http://xmlrpc.usefulinc.com/list.html, or to <xmlrpc@usefulinc.com>.
|