mirror of
https://github.com/php/php-src.git
synced 2024-09-22 02:17:32 +00:00
a8dd009f23
Closes GH-6610.
220 lines
7.7 KiB
Plaintext
220 lines
7.7 KiB
Plaintext
PHP 8.1 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
|
|
========================================
|
|
|
|
- Core:
|
|
. Access to the $GLOBALS array is now subject to a number of restrictions.
|
|
Read and write access to individual array elements like $GLOBALS['var']
|
|
continues to work as-is. Read-only access to the entire $GLOBALS array also
|
|
continues to be supported. However, write access to the entire $GLOBALS
|
|
array is no longer supported. For example, array_pop($GLOBALS) will result
|
|
in an error.
|
|
RFC: https://wiki.php.net/rfc/restrict_globals_usage
|
|
|
|
- Fileinfo:
|
|
. The fileinfo functions now accept and return, respectively, finfo objects
|
|
instead of resources.
|
|
|
|
- IMAP:
|
|
. The IMAP functions now accept and return, respectively, IMAPConnection objects
|
|
instead of resources.
|
|
|
|
- MySQLi:
|
|
. mysqli_fetch_fields() and mysqli_fetch_field_direct() will now always return
|
|
zero for max_length. You can compute this information by iterating over the
|
|
result set and taking the maximum length. This is what PHP was doing
|
|
internally previously.
|
|
. The MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH option no longer has an effect.
|
|
. The MYSQLI_STORE_RESULT_COPY_DATA option no longer has an effect.
|
|
|
|
- MySQLnd:
|
|
. The mysqlnd.fetch_copy_data ini setting has been removed. However, this
|
|
should not result in user-visible behavior changes.
|
|
|
|
- PDO:
|
|
. PDO::ATTR_STRINGIFY_FETCHES now also stringifies values of type bool to
|
|
"0" or "1". Previously booleans were not stringified.
|
|
. Calling bindColumn() with PDO::PARAM_LOB (and assuming stringification is
|
|
not enabled) will now consistently bind a stream result, as documented.
|
|
Previously the result would be either a stream or a string depending on the
|
|
used database driver and the time the binding is performed.
|
|
|
|
- PDO MySQL:
|
|
. Integers and floats in result sets will now be returned using native PHP
|
|
types instead of strings when using emulated prepared statements. This
|
|
matches the behavior of native prepared statements. You can restore the
|
|
previous behavior by enabling the PDO::ATTR_STRINGIFY_FETCHES option.
|
|
|
|
- PDO SQLite:
|
|
. Integers and floats in results sets will now be returned using native PHP
|
|
types. You can restore the previous behavior by enabling the
|
|
PDO::ATTR_STRINGFIY_FETCHES option.
|
|
|
|
- Standard:
|
|
. version_compare() no longer accepts undocumented operator abbreviations.
|
|
. htmlspecialchars(), htmlentities(), htmlspecialchars_decode(),
|
|
html_entitity_decode() and get_html_translation_table() now use
|
|
ENT_QUOTES | ENT_SUBSTITUTE rather than ENT_COMPAT by default. This means
|
|
that ' is escaped to ' while previously it was left alone.
|
|
Additionally, malformed UTF-8 will be replaced by a Unicode substitution
|
|
character, instead of resulting in an empty string.
|
|
|
|
========================================
|
|
2. New Features
|
|
========================================
|
|
|
|
- Core:
|
|
. It is now possible to specify octal integer by using the explicit "0o"/"0O"
|
|
prefix similar to hexadecimal ("0x"/"0X) and binary ("0b"/"0B") integer literals
|
|
RFC: https://wiki.php.net/rfc/explicit_octal_notation
|
|
|
|
- Curl:
|
|
. Added CURLOPT_DOH_URL option.
|
|
|
|
- hash:
|
|
. The following functions have changed signatures:
|
|
|
|
- function hash(string $algo, string $data, bool $binary = false, array $options = []): string|false {}
|
|
- function hash_file(string $algo, string $filename, bool $binary = false, array $options = []): string|false {}
|
|
- function hash_init(string $algo, int $flags = 0, string $key = "", array $options = []): HashContext {}
|
|
|
|
The additional `$options` argument can be used to pass algorithm specific data.
|
|
|
|
. Added MurmurHash3 with streaming support. The following variants are implemented:
|
|
|
|
- murmur3a, 32-bit hash
|
|
- murmur3c, 128-bit hash for x86
|
|
- murmur3f, 128-bit hash for x64
|
|
|
|
The initial hash state can be passed through the `seed` key in the `$options` array, for example:
|
|
|
|
```php
|
|
$h = hash("murmur3f", $data, options: ["seed" => 42]);
|
|
echo $h, "\n";
|
|
```
|
|
|
|
A valid seed value is within the range from 0 to the plaform defined UINT_MAX, usually 4294967295.
|
|
|
|
. Added xxHash. The implementation brings in the following arguments
|
|
|
|
- xxh32, 32-bit hash
|
|
- xxh64, 64-bit hash
|
|
- xxh3, 64-bit hash
|
|
- xxh128, 128-bit hash
|
|
|
|
The initial hash state can be passed through the `seed` key in the `$options` array, for example:
|
|
|
|
```php
|
|
$h = hash("xxh3", $data, options: ["seed" => 42]);
|
|
echo $h, "\n";
|
|
```
|
|
|
|
- PDO SQLite:
|
|
. SQLite's "file:" DSN syntax is now supported, which allows specifying
|
|
additional flags. This feature is not available if open_basedir is set.
|
|
Example:
|
|
|
|
new PDO('sqlite:file:path/to/sqlite.db?mode=ro')
|
|
|
|
- Posix:
|
|
. Added POSIX_RLIMIT_KQUEUES and POSIX_RLIMIT_NPTS. These rlimits are only
|
|
available on FreeBSD.
|
|
|
|
========================================
|
|
3. Changes in SAPI modules
|
|
========================================
|
|
|
|
========================================
|
|
4. Deprecated Functionality
|
|
========================================
|
|
|
|
========================================
|
|
5. Changed Functions
|
|
========================================
|
|
|
|
- Filter:
|
|
. The FILTER_FLAG_ALLOW_OCTAL flag of the FILTER_VALIDATE_INT filter now accept
|
|
octal string with the leading octal prefix ("0o"/"0O")
|
|
RFC: https://wiki.php.net/rfc/explicit_octal_notation
|
|
|
|
- GMP:
|
|
. All GMP function now accept octal string with the leading octal prefix ("0o"/"0O")
|
|
RFC: https://wiki.php.net/rfc/explicit_octal_notation
|
|
|
|
========================================
|
|
6. New Functions
|
|
========================================
|
|
|
|
- Core:
|
|
. Added array_is_list(array $array), which will return true if the array keys are 0 .. count($array)-1 in that order.
|
|
RFC: https://wiki.php.net/rfc/is_list
|
|
|
|
========================================
|
|
7. New Classes and Interfaces
|
|
========================================
|
|
|
|
========================================
|
|
8. Removed Extensions and SAPIs
|
|
========================================
|
|
|
|
========================================
|
|
9. Other Changes to Extensions
|
|
========================================
|
|
|
|
- MySQLi:
|
|
. The mysqli_stmt::next_result() and mysqli::fetch_all() methods are now
|
|
available when linking against libmysqlclient.
|
|
|
|
- OpenSSL:
|
|
. The OpenSSL extension now requires at least OpenSSL version 1.0.2.
|
|
|
|
- Standard:
|
|
. --with-password-argon2 now uses pkg-config to detect libargon2. As such,
|
|
an alternative libargon2 location should now be specified using
|
|
PKG_CONFIG_PATH.
|
|
|
|
========================================
|
|
10. New Global Constants
|
|
========================================
|
|
|
|
- MySQLi:
|
|
. MYSQLI_REFRESH_REPLICA has been added as a replacement for
|
|
MYSQLI_REFRESH_SLAVE, in line with an upstream change in MySQL. The old
|
|
constant is still available for backwards-compatibility reasons, but may
|
|
be deprecated/removed in the future.
|
|
|
|
========================================
|
|
11. Changes to INI File Handling
|
|
========================================
|
|
|
|
========================================
|
|
12. Windows Support
|
|
========================================
|
|
|
|
. The macro IGNORE_URL_WIN has been removed; it had no effect as of PHP 5.0.0.
|
|
|
|
========================================
|
|
13. Other Changes
|
|
========================================
|
|
|
|
========================================
|
|
14. Performance Improvements
|
|
========================================
|