mirror of
https://github.com/php/php-src.git
synced 2026-10-28 17:56:50 +08:00
SoapClient followed any Location header, so a redirect to another host, port, or scheme resent the HTTP authentication credentials, the stream context headers, and the SOAP envelope to that origin. Such redirects now fail with a SoapFault. A same-host upgrade from http to https on port 443 is still followed. The new follow_cross_origin_redirects option restores the previous behavior. Cookies were already scoped by domain and Proxy-Authorization only reaches the proxy, so neither changes. Fixes GH-24315
202 lines
7.9 KiB
Plaintext
202 lines
7.9 KiB
Plaintext
PHP 8.7 UPGRADE NOTES
|
|
|
|
1. Backward Incompatible Changes
|
|
2. New Features
|
|
3. Changes in SAPI modules
|
|
4. Deprecated Functionality
|
|
5. Changed Functions
|
|
6. New Functions
|
|
7. New Classes and Interfaces
|
|
8. Removed Extensions and SAPIs
|
|
9. Other Changes to Extensions
|
|
10. New Global Constants
|
|
11. Changes to INI File Handling
|
|
12. Windows Support
|
|
13. Other Changes
|
|
14. Performance Improvements
|
|
|
|
========================================
|
|
1. Backward Incompatible Changes
|
|
========================================
|
|
|
|
- Curl:
|
|
. curl_multi_exec() now throws a TypeError when still_running is not an int.
|
|
. Nested arrays in CURLOPT_POSTFIELDS now throw a TypeError, instead of being
|
|
silently converted to the string "Array".
|
|
|
|
- PDO:
|
|
. PDOStatement::bindColumn() now throws a ValueError when the column name is
|
|
not present in the result set. It previously reported the condition
|
|
through PDO::ATTR_ERRMODE and returned false.
|
|
|
|
- Reflection:
|
|
. The public $name and $class properties of ReflectionClass,
|
|
ReflectionClassConstant, ReflectionProperty, ReflectionMethod,
|
|
ReflectionFunctionAbstract, ReflectionParameter, ReflectionExtension,
|
|
ReflectionZendExtension, ReflectionAttribute and ReflectionConstant are
|
|
now readonly.
|
|
|
|
- SOAP:
|
|
. SoapClient no longer follows an HTTP redirect to a different origin
|
|
(scheme, host, or port) and throws a SoapFault instead. Previously the
|
|
request body and the configured credentials and headers were resent to
|
|
the new origin. A redirect from http to https on the same host is still
|
|
followed. Set the new follow_cross_origin_redirects option to true to
|
|
restore the previous behavior.
|
|
|
|
- Session:
|
|
. Setting session.cookie_path to a value containing one of ";\r\n", or
|
|
session.cookie_domain to a value containing one of ",; \t\r\n\013\014",
|
|
now emits a warning and leaves the setting unchanged. Previously such a
|
|
value was appended to the Set-Cookie header verbatim, which let an
|
|
application terminate one attribute and append further ones.
|
|
|
|
- Standard:
|
|
. The number of filters that can be chained in a php://filter URL is limited
|
|
to 16 by default. Set the stream context option max_filter_count to change
|
|
this.
|
|
|
|
========================================
|
|
2. New Features
|
|
========================================
|
|
|
|
- Curl:
|
|
. Multiple files can now be uploaded with the same field name by passing an
|
|
array of CURLFile or CURLStringFile objects to CURLOPT_POSTFIELDS.
|
|
|
|
- Intl:
|
|
. Added IntlRelativeDateTimeFormatter to format relative date and time offsets
|
|
using locale-specific text, such as "yesterday" or "in 3 days". Its format()
|
|
method uses a textual form when available and a numeric form otherwise,
|
|
while formatNumeric() always uses a numeric form. combineDateAndTime()
|
|
combines already formatted date and time strings according to the locale.
|
|
The constructor accepts an optional NumberFormatter to customize numeric
|
|
output; subsequent configuration changes to that object are reflected in
|
|
formatting results. Styles, capitalization contexts, and units are selected
|
|
using the IntlRelativeDateTimeFormatterStyle,
|
|
IntlRelativeDateTimeFormatterCapitalization, and
|
|
IntlRelativeDateTimeFormatterUnit enums, respectively.
|
|
RFC: https://wiki.php.net/rfc/reldateformatter
|
|
. Locale::acceptFromHttp() and locale_accept_from_http() now accept an
|
|
optional $availableLocales array argument. When given, the
|
|
Accept-Language header is matched against these locales instead of all
|
|
locales known to ICU, and the matching entry is returned as passed.
|
|
A ValueError is thrown if the array is empty or contains an invalid
|
|
locale, and a TypeError if it contains a non-string value.
|
|
|
|
- Streams:
|
|
. The so_linger, so_rcvbuf and so_sndbuf stream socket context options are
|
|
now also applied to unix and unix datagram sockets.
|
|
|
|
========================================
|
|
3. Changes in SAPI modules
|
|
========================================
|
|
|
|
========================================
|
|
4. Deprecated Functionality
|
|
========================================
|
|
|
|
========================================
|
|
5. Changed Functions
|
|
========================================
|
|
|
|
- Standard:
|
|
. stream_select() no longer fails once a watched descriptor exceeds
|
|
FD_SETSIZE. The descriptor set now grows on demand on both POSIX (bitset)
|
|
and Windows (winsock fd_set), so code watching many streams works without
|
|
rebuilding PHP with --enable-fd-setsize. On Windows, selecting on more than
|
|
64 pipe or file handles no longer crashes; it fails with a warning, as that
|
|
path remains bounded by WaitForMultipleObjects().
|
|
|
|
========================================
|
|
6. New Functions
|
|
========================================
|
|
|
|
- Intl:
|
|
. Added Transliterator::toRules() and transliterator_to_rules() to export
|
|
rules that can be used to recreate a transliterator. The optional
|
|
$escapeUnprintable argument escapes unprintable characters when true.
|
|
|
|
========================================
|
|
7. New Classes and Interfaces
|
|
========================================
|
|
|
|
- Intl:
|
|
. IntlRelativeDateTimeFormatter
|
|
. enum IntlRelativeDateTimeFormatterStyle
|
|
. enum IntlRelativeDateTimeFormatterCapitalization
|
|
. enum IntlRelativeDateTimeFormatterUnit
|
|
RFC: https://wiki.php.net/rfc/reldateformatter
|
|
. Added IntlNumberFormatter class to format a number with a given locale
|
|
and ICU number skeleton, which also covers measurement units, e.g.
|
|
"measure-unit/speed-kilometer-per-hour unit-width-full-name".
|
|
IntlNumberFormatter::format() accepts an int, a float or a decimal
|
|
string without exponent, the latter being formatted with arbitrary
|
|
precision.
|
|
IntlNumberFormatter::createFromSkeleton() rejects a scale/ option in
|
|
exponent notation, e.g. "scale/1e3".
|
|
It is supported from icu 63.
|
|
|
|
========================================
|
|
8. Removed Extensions and SAPIs
|
|
========================================
|
|
|
|
========================================
|
|
9. Other Changes to Extensions
|
|
========================================
|
|
|
|
========================================
|
|
10. New Global Constants
|
|
========================================
|
|
|
|
========================================
|
|
11. Changes to INI File Handling
|
|
========================================
|
|
|
|
========================================
|
|
12. Windows Support
|
|
========================================
|
|
|
|
========================================
|
|
13. Other Changes
|
|
========================================
|
|
|
|
========================================
|
|
14. Performance Improvements
|
|
========================================
|
|
|
|
- Core:
|
|
. A flat unkeyed list assignment from an array literal with one value per
|
|
target, such as [$a, $b] = [$b, $a], no longer builds the array when the
|
|
result is unused: the values are evaluated in order, a variable among them
|
|
is copied, and they are assigned to the targets directly. A value its
|
|
target does not keep is now released at that assignment instead of after
|
|
the last one.
|
|
|
|
- Standard:
|
|
. Improved performance of strcspn() and strpbrk() when searching longer strings
|
|
with a single-byte character mask.
|
|
. Improved performance of array_chunk() when not preserving keys.
|
|
. Improved performance of array_splice() when inserting without removing
|
|
elements.
|
|
. Improved performance of str_rot13().
|
|
. Improved performance of pack() for large strings using the a, A and Z
|
|
formats.
|
|
. Improved performance of htmlspecialchars(), htmlentities(),
|
|
html_entity_decode() and get_html_translation_table(), especially with
|
|
UTF-8.
|
|
. htmlspecialchars() returns its input without copying it when nothing needs
|
|
encoding.
|
|
|
|
- MBString:
|
|
. Improved performance of mb_strlen for UTF-8 strings.
|
|
|
|
- PDO:
|
|
. Improved performance of fetching rows with PDO::FETCH_BOTH, the default
|
|
fetch mode, for results with more than 4 columns.
|
|
|
|
- PDO_PGSQL:
|
|
. Improved performance of the SQL parser that handles placeholders in
|
|
PDO::prepare() and, with emulated prepares, PDOStatement::execute().
|
|
. Improved performance of fetching integer columns.
|