From: Stanislav Malyshev Date: Mon, 23 Mar 2015 01:52:55 +0000 (-0700) Subject: Merge branch 'PHP-5.5' into PHP-5.6 X-Git-Tag: php-5.6.8RC1~40 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c6384a7908976c5339374e7449e4ad5f38934e49;p=php Merge branch 'PHP-5.5' into PHP-5.6 * PHP-5.5: add CURL_HTTP_VERSION_2_0 and CURL_VERSION_HTTP2 --- c6384a7908976c5339374e7449e4ad5f38934e49 diff --cc UPGRADING index 9428add450,7b51ae5e92..52f139de28 --- a/UPGRADING +++ b/UPGRADING @@@ -170,284 -91,439 +170,287 @@@ PHP 5.6 UPGRADE NOTE application/xml is now sent automatically. ======================================== -3. Deprecated Functionality +4. Deprecated Functionality ======================================== -- The original MySQL extension is now deprecated and will generate - deprecation warnings when connecting to a database through - mysql_connect(), mysql_pconnect() or by establishing an implicit - connection. Use MySQLi or PDO instead. +- Incompatible context calls: + Instance calls from an incompatible context are now deprecated and issue + E_DEPRECATED instead of E_STRICT. See https://wiki.php.net/rfc/incompat_ctx -- The preg_replace /e modifier is now deprecated. Use - preg_replace_callback instead. - (https://wiki.php.net/rfc/remove_preg_replace_eval_modifier) +- The "CN_match" and "SNI_server_name" SSL context options are deprecated in + favor of the new "peer_name" option. Name verification now checks certificate + SAN names as well as the CN field and the specific name fields are deprecated + to avoid confusion. Their use triggers E_DEPRECATED but continues to work as + before. If specified, the specific values take precedence over the general + "peer_name" value. -- IntlDateFormatter::setTimeZoneID() and datefmt_set_timezone_id() are - deprecated. Use IntlDateFormatter::setTimeZone() or - datefmt_set_timezone() instead. +- Deprecated PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT, an + undocument constant effectively equivalent to PDO::ATTR_EMULATE_PREPARES. -- mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() and mcrypt_ofb() now throw - E_DEPRECATED. Their use was already previously discouraged in the - documentation, but that predated the existence of E_DEPRECATED. +- Deprecated INIs: Following INIs are deprecated in favour of new + internal_encoding/input_encoding/output_encoding. Refer to "Changes to + encodings in PHP 5.6" in "11. Other Changes" section for more details. + + iconv.input_encoding + iconv.output_encoding + iconv.internal_encoding + mbstring.http_input + mbstring.http_output + mbstring.internal_encoding ======================================== -4. Changed Functions +5. Changed Functions ======================================== -- pack()/unpack() had the following changes, which bring it more in - line with Perl's behavior: - Implemented format character "Z": NULL - padded string, with trailing NULL bytes removed. - Changed format - character "a": this no longer removes trailing NULL bytes. - - Changed format character "A": all trailing ASCII whitespace is now - removed (defined as spaces, tabs, \r, \n and NULL). - -- MessageFormatter::format() and related functions now accepted named - arguments and mixed numeric/named arguments in ICU 4.8+. - -- MessageFormatter::format() and related functions now don't error out - when an insufficient argument count is provided. Instead, the - placeholders will remain unsubstituted. - -- MessageFormatter::parse() and MessageFormat::format() (and their - static equivalents) now don't throw away better than second - precision in the arguments. - -- IntlDateFormatter::__construct and datefmt_create() now accept for - the $timezone argument time zone identifiers, IntlTimeZone objects, - DateTimeZone objects and NULL. It used to accept only time zone - identifiers and NULL. Invalid time zone identifiers are no longer - accepted. Empty strings are no longer accepted. - -- The default time zone used in IntlDateFormatter::__construct and - datefmt_create() (when the corresponding argument is not passed or - NULL is passed) is now the one given by date_default_timezone_get(), - not the default ICU time zone. - -- The time zone passed to the IntlDateFormatter is ignored if it is - NULL and if the calendar passed is an IntlCalendar object -- in this - case, the IntlCalendar's time zone will be used instead. Otherwise, - the time zone specified in the $timezone argument is used - instead. This does not affect old code, as IntlCalendar was - introduced in this version. - -- IntlDateFormatter::__construct and datefmt_create() now accept for - the $calendar argument also IntlCalendar objects. - -- IntlDateFormatter::getCalendar() and datefmt_get_calendar() return - false if the IntlDateFormatter was set up with an IntlCalendar - instead of the constants - IntlDateFormatter::GREGORIAN/TRADITIONAL. IntlCalendar did not exist - before this version. - -- IntlDateFormatter::setCalendar() and datefmt_set_calendar() now also - accept an IntlCalendar object, in which case its time zone is - taken. Passing a constant is still allowed, and still keeps the time - zone. - -- IntlDateFormatter::format() and datefmt_format() now also accept an - IntlCalendar object for formatting. - -- set_error_handler(NULL) can now be used to reset the error handler. - Furthermore both set_error_handler(NULL) and - set_exception_handler(NULL) will now return the previously defined - error/exception handler. Previously bool(true) was returned. - -- setcookie(), setrawcookie() and ext/session now send Max-Age headers - alongside Expires headers. (see - https://wiki.php.net/rfc/cookie_max-age) - -- curl_setopt now accepts new option CURLOPT_SAFE_UPLOAD and CURLFile - object for safer file uploads (see - https://wiki.php.net/rfc/curl-file-upload) - -- Functions in the socket extension now do not emit warnings when the - errno is EAGAIN, EWOULDBLOCK or EINPROGRESS. - -- Since 5.5.2, spl_autoload_functions() returns different names for - different lambda functions registered via spl_autoload_register(). - -- Since 5.5.3, DOMDocument::schemaValidateSource() and - DOMDocument::schemaValidate() accept flag parameter. Only flag - available now is LIBXML_SCHEMA_CREATE. Default is 0. - -- Since 5.5.4, fputcsv() has fifth parameter escape_char, allowing to - specify escape char. - -4a. unserialize() change ------------------------- - -- Starting PHP 5.5.13, the bug fix for bug #67072 introduces a change to - unserialize() function, detailed below: - - If the string looking like 'O:..:"ClassName":...' is unserialized, and - the class named is an internal class that declares custom unserializer - function, or extends such class, unserialize would fail. - - Using O: for user classes not extending internal classes (including - those implementing Serializable) is still supported in 5.4, though - it is deprecated and may not be supported in 5.6 for classes that do not - originally serialize to O:. Same for using O: for internal classes - implementing Serializable (like ArrayObject) and classes that extend - them. - - The reason for that is that O: format is meant to be used with classes - that do not define custom handlers, and was never intended for the use - with classes that do. When used with the class that relies on custom - unserializer, it can leave the object of such internal class in an - inconsistent state which has been observed to result in crashes and may - also lead to memory corruption and ultimately even arbitrary code - execution. This was never the intended use of unserializer, and mere - possibility of doing this constitutes a bug, since the data passed to - unserialize() is not a valid serialization of any object. Since there - are many applications applying unserialize() to untrusted data, this - presents a potential security vulnerability. Thus, keeping such bug in - the code base was considered too dangerous. - - We are aware that some applications use O: format as a way to - instantiate classes. This was never the intended usage of serializer, - and ReflectionClass methods such as newInstance or - newInstanceWithoutConstructor can be used for that. We're working on - providing more comprehensive solution for such use cases in PHP 5.6 and - welcome the ideas in this area. - - We note also that using unserialize() on any data that is not the result - of serialize() call continues to be an unsupported scenario and should - not be relied on to produce any specific result. +- cURL: + CURLOPT_SAFE_UPLOAD is now turned on by default and uploads with @file + do not work unless it is explicitly set to false. + + curl_setopt() now supports the following nullable settings (>= 5.5.11): + . CURLOPT_CUSTOMREQUEST + . CURLOPT_FTPPORT + . CURLOPT_RANGE + . CURLOPT_FTP_ACCOUNT + . CURLOPT_RTSP_SESSION_ID + . CURLOPT_KRBLEVEL + . CURLOPT_KRB4LEVEL + +- Strings: + substr_compare() now allows $length to be zero. + pack() and unpack() now support 64-bit format specifiers: q, Q, J and P. + +- Crypt: + crypt() will now raise an E_NOTICE error if the salt parameter is omitted. + See: https://wiki.php.net/rfc/crypt_function_salt + +- Mcrypt: + The $source parameter of mcrypt_create_iv() now defaults to + MCRYPT_DEV_URANDOM instead of MCRYPT_DEV_RANDOM. + +- OpenSSL: + The $crypto_type parameter is now optional in stream_socket_enable_crypto() + if the stream's SSL context specifies the new "crypto_type" option. The + crypto method from the context is used as a fallback if no crypto method is + specified at call-time. + +- Reflection: + ReflectionClass::newInstanceWithoutConstructor previously didn't allow the + instantiation of any internal class which used custom object storage + (overriding the default create_object handler), this was changed to only + reject the instantiation of such classes if the class is also marked as + final. + +- XMLReader: + XMLReader::getAttributeNs and XMLReader::getAttributeNo now return NULL if + the attribute could not be found, just like XMLReader::getAttribute. + +- Pgsql: + pg_insert()/pg_select()/pg_update()/pg_delete() are no longer EXPERIMENTAL. + The following functions no longer block until query write completion if the + socket stream underlying a database connection is set to non-blocking mode: + . pg_send_execute() + . pg_send_prepare() + . pg_send_query() + . pg_send_query_params() + +- unserialize: + Manipulated serialization strings for objects implementing Serializable by + replacing "C:" with "O:" at the start will now produce an error. + +- parse_ini_file(): +- parse_ini_string(): + Added scanner mode INI_SCANNER_TYPED to yield typed .ini values. + For PHP >= 5.6.1 + +- JSON: + Added JSON_PRESERVE_ZERO_FRACTION option (PHP >= 5.6.5) ======================================== -5. New Functions +6. New Functions ======================================== -- Core: - - array_column() - - boolval() - - password_get_info() - - password_hash() - - password_needs_rehash() - - password_verify() +- Datetime: + Added DatePeriod::getStartDate(), DatePeriod::getEndDate(), DatePeriod::getDateInterval() in 5.6.5. -- cURL: - - curl_file_create - -- GD - - imageflip - - imagecrop - - imagecropauto - - imagesetinterpolation - - imageaffine - - imageaffinematrixget - - imageaffinematrixconcat - - imagescale - -- Hash: - - hash_pbkdf2() - -- Intl: - - datefmt_format_object() - - datefmt_get_calendar_object() - - datefmt_get_timezone() - - datefmt_set_timezone() - - datefmt_get_calendar_object() - - intlcal_create_instance() - - intlcal_get_keyword_values_for_locale() - - intlcal_get_now() - - intlcal_get_available_locales() - - intlcal_get() - - intlcal_get_time() - - intlcal_set_time() - - intlcal_add() - - intlcal_set_time_zone() - - intlcal_after() - - intlcal_before() - - intlcal_set() - - intlcal_roll() - - intlcal_clear() - - intlcal_field_difference() - - intlcal_get_actual_maximum() - - intlcal_get_actual_minimum() - - intlcal_get_day_of_week_type() - - intlcal_get_first_day_of_week() - - intlcal_get_greatest_minimum() - - intlcal_get_least_maximum() - - intlcal_get_locale() - - intlcal_get_maximum() - - intlcal_get_minimal_days_in_first_week() - - intlcal_get_minimum() - - intlcal_get_time_zone() - - intlcal_get_type() - - intlcal_get_weekend_transition() - - intlcal_in_daylight_time() - - intlcal_is_equivalent_to() - - intlcal_is_lenient() - - intlcal_is_set() - - intlcal_is_weekend() - - intlcal_set_first_day_of_week() - - intlcal_set_lenient() - - intlcal_equals() - - intlcal_get_repeated_wall_time_option() - - intlcal_get_skipped_wall_time_option() - - intlcal_set_repeated_wall_time_option() - - intlcal_set_skipped_wall_time_option() - - intlcal_from_date_time() - - intlcal_to_date_time() - - intlcal_get_error_code() - - intlcal_get_error_message() - - intlgregcal_create_instance() - - intlgregcal_set_gregorian_change() - - intlgregcal_get_gregorian_change() - - intlgregcal_is_leap_year() - - intltz_create_time_zone() - - intltz_create_default() - - intltz_get_id() - - intltz_get_gmt() - - intltz_get_unknown() - - intltz_create_enumeration() - - intltz_count_equivalent_ids() - - intltz_create_time_zone_id_enumeration() - - intltz_get_canonical_id() - - intltz_get_region() - - intltz_get_tz_data_version() - - intltz_get_equivalent_id() - - intltz_use_daylight_time() - - intltz_get_offset() - - intltz_get_raw_offset() - - intltz_has_same_rules() - - intltz_get_display_name() - - intltz_get_dst_savings() - - intltz_from_date_time_zone() - - intltz_to_date_time_zone() - - intltz_get_error_code() - - intltz_get_error_message() - - - IntlDateFormatter::formatObject() - - IntlDateFormatter::getCalendarObject() - - IntlDateFormatter::getTimeZone() - - IntlDateFormatter::setTimeZone() +- GMP: + Added gmp_root($a, $nth) and gmp_rootrem($a, $nth) for calculating nth roots. + Added gmp_import($data, $word_size = 1, $options = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN) in PHP 5.6.1. + Added gmp_export($gmpnumber, $word_size = 1, $options = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN) in PHP 5.6.1. + Added gmp_random_range() and gmp_random_bits() in PHP 5.6.3. -- LDAP: - - ldap_modify_batch() (5.5.10) +- Hash + Added hash_equals($known_string, $user_string) -- SOAP: - - SoapClient::__getCookies() (5.5.14) +- OpenSSL: + Added string openssl_x509_fingerprint($x509, $type, $binary). + Added string openssl_spki_new($private_key, $challenge, $algorithm) + Added bool openssl_spki_verify($spkac) + Added string openssl_spki_export($spkac) + Added string openssl_spki_export_challenge($spkac) + Added array openssl_get_cert_locations() -- Sockets: - - socket_sendmsg() - - socket_recvmsg() - - socket_cmsg_space() +- LDAP: + Added ldap_escape($value, $ignore = "", $flags = 0). + Added ldap_modify_batch($link_identifier, $dn, $modifications) described in + https://wiki.php.net/rfc/ldap_modify_batch. -- SPL: - - SplFixedArray::__wakeup() - - SplDoublyLinkedList::add() - - RecursiveTreeIterator::getPostfix() (5.5.2) - - RecursiveTreeIterator::setPostfix() (5.5.2) +- Pgsql: + Added pg_socket($connection) to allow async connections and non-blocking IO + Added pg_connect_poll($connection) for establishing async connections + Added pg_consume_input($connection) for non-blocking query result consumption + Added pg_flush($connection) for non-blocking query write completion -- Zend OPcache: - - opcache_get_configuration() - - opcache_get_status() - - opcache_reset() +- PDO_pgsql + Added PDO::pgsqlGetNotify($result_type = PDO::FETCH_USE_DEFAULT, $ms_timeout = 0) + Added PDO::pgsqlGetPid() -======================================== -6. New Classes and Interfaces -======================================== +- Reflection + Added ReflectionFunction::isVariadic() and ReflectionParameter::isVariadic(). -- Intl: - - IntlCalendar - - IntlGregorianCalendar - - IntlTimeZone - - IntlBreakIterator - - IntlRuleBasedBreakIterator - - IntlCodePointBreakIterator - - UConverter +- SPL + Added SplFileObject::fread($length) to complement fwrite() method (>= 5.5.11) -- cURL: - - CURLFile +- Zip: + Added ZipArchive::setPassword($password) ======================================== -7. Removed Extensions +7. New Classes and Interfaces ======================================== -None ======================================== -8. Other Changes to Extensions +8. Removed Extensions ======================================== -- Intl: - - This extension now requires ICU 4.0+. -- Phar: - - Added ability of resolving alias created by Phar::map ======================================== -9. New Global Constants +9. Other Changes to Extensions ======================================== -- mysqli: - - Added MYSQLI_SERVER_PUBLIC_KEY constant to be used with mysqli_options() - - cURL: - - Added CURLOPT_SAFE_UPLOAD to be used with curl_setopt(). - - Added CURL_WRAPPERS_ENABLED to reflect --with-curlwrappers. - - Added CURL_HTTP_VERSION_2_0 and CURL_VERSION_HTTP2 in 5.5.24+. - -- GD - - Added constants for imageflip: - . IMG_FLIP_HORIZONTAL - . IMG_FLIP_VERTICAL - . IMG_FLIP_BOTH - - Added constants for imagecrop - . IMG_CROP_DEFAULT - . IMG_CROP_TRANSPARENT - . IMG_CROP_BLACK - . IMG_CROP_WHITE - . IMG_CROP_SIDES - . IMG_CROP_THRESHOLD - - Added constants for imagesetinterpolation, used by imagescale - imagerotate and imageaffine: - . IMG_BELL - . IMG_BESSEL - . IMG_BILINEAR_FIXED - . IMG_BICUBIC - . IMG_BICUBIC_FIXED - . IMG_BLACKMAN - . IMG_BOX - . IMG_BSPLINE - . IMG_CATMULLROM - . IMG_GAUSSIAN - . IMG_GENERALIZED_CUBIC - . IMG_HERMITE - . IMG_HAMMING - . IMG_HANNING - . IMG_MITCHELL - . IMG_POWER - . IMG_QUADRATIC - . IMG_SINC - . IMG_NEAREST_NEIGHBOUR - . IMG_WEIGHTED4 - . IMG_TRIANGLE - - Added constants for imageaffinematrixget - . IMG_AFFINE_TRANSLATE - . IMG_AFFINE_SCALE - . IMG_AFFINE_ROTATE - . IMG_AFFINE_SHEAR_HORIZONTAL - . IMG_AFFINE_SHEAR_VERTICAL + - The following constants have been removed as they are now marked "obsolete" + in the underlying library and never had any effect to begin with: + . CURLOPT_CLOSEPOLICY + . CURLCLOSEPOLICY_CALLBACK + . CURLCLOSEPOLICY_LEAST_RECENTLY_USED + . CURLCLOSEPOLICY_LEAST_TRAFFIC + . CURLCLOSEPOLICY_OLDEST + . CURLCLOSEPOLICY_SLOWEST + +- GMP: + The GMP extension now uses objects as the underlying data structure, rather + than resources. GMP instances now support dumping, serialization, cloning, + casts to primitive types and have overloaded operators. + (RFC: https://wiki.php.net/rfc/operator_overloading_gmp) + +- OCI8: + - Added Implicit Result Set support for Oracle Database 12c with a + new oci_get_implicit_resultset() function. + - Using 'oci_execute($s, OCI_NO_AUTO_COMMIT)' for a SELECT no longer + unnecessarily initiates an internal ROLLBACK during connection + close. + - Multi-row OCI_RETURN_LOB queries require fewer "round trips" to the database. + - Added DTrace probes enabled with PHP's generic --enable-dtrace + - The oci_internal_debug() function is now a no-op. + - The phpinfo() output format for OCI8 has changed. + +- OpenSSL: + - The "SNI_enabled" SSL stream context option is now set to TRUE by default + if supported by the underlying openssl library. + +- PCRE: + - The information collected by the (*MARK) backtracking control verb is now + collected into the "MARK" index of the $matches array for preg_match(), + preg_match_all() and preg_replace_callback(). + +- Pgsql: + - pg_insert()/pg_select()/pg_update()/pg_delete()/pg_meta_data()/pg_convert() + are no longer EXPERIMENTAL + - Added PGSQL_DML_ESCAPE option for pg_insert()/pg_select()/pg_update()/pg_delete() + that simply escapes all supplied parameters. These functions can be as fast as + native query. Unvalidated data(Unknown data types) is passed as string. + JSON/Array/etc are supported both PGSQL_DML_ESCAPE and pg_convert() as string. + - pg_select() returns PostgreSQL query resource when query is executed. + - Added extended flag parameter for pg_meta_data(). pg_meta_data() always + returns "is enum" attribute. + - The new pg_socket() function returns a socket stream with no behavior other + than to allow IO-readiness polling on a DB connection socket. Calling + stream_set_blocking() on its result enables non-blocking behavior. + - Passing the new PGSQL_CONNECT_ASYNC flag to pg_connect() allows applications + to poll for IO readiness via pg_connect_poll() and establish connections + asynchronously. + +- PDO_pgsql: + - Added PDO::PGSQL_ATTR_DISABLE_PREPARES constant to execute the queries + without preparing them, while still passing parameters separately from + the command text using PQexecParams. + - Added LISTEN/NOTIFY support via PDO::pgsqlGetNotify / PDO::pgsqlGetPid() + as described in https://bugs.php.net/bug.php?id=42614. + +- DOM: + - DOMNode::textContent is now a writeable property. (>= 5.6.1) ======================================== -10. Changes to INI File Handling +10. New Global Constants ======================================== -- Core: - - Added sys_temp_dir INI directive, for specifying temporary - directory. - -- Intl: - - Added intl.use_exceptions INI directive, which controls what - happens when global errors are set together with intl.error_level. - -- MSSQL: - - mssql.compatability_mode renamed to mssql.compatibility_mode in 5.5.2, - old directive still supported for BC reasons. - -- mysqlnd: - - Added mysqlnd.sha256_server_public_key INI PERDIR setting that - affects all APIs which use(are built) for mysqlnd. This allows - ext/mysqli to be used with the new auth protocol, although at - coarser level. - -- Sessions: - - Added session.use_strict_mode in 5.5.3, which prevents session - fixation attacks and session collisions. - See also https://wiki.php.net/rfc/strict_sessions - -- Zend OPcache (See http://php.net/manual/en/book.opcache.php) - - Added the following directives: - - opcache.enable (default "1") - - opcache.memory_consumption (default "64") - - opcache.interned_strings_buffer (default "4") - - opcache.max_accelerated_files (default "2000") - - opcache.max_wasted_percentage (default "5") - - opcache.use_cwd (default "1") - - opcache.validate_timestamps (default "1") - - opcache.revalidate_freq (default "2") - - opcache.revalidate_path (default "0") - - opcache.save_comments (default "1") - - opcache.load_comments (default "1") - - opcache.fast_shutdown (default "0") - - opcache.enable_file_override (default "0") - - opcache.optimization_level (default "0xffffffff") - - opcache.inherited_hack (default "1") - - opcache.blacklist_filename (default "") - - opcache.max_file_size (default "0") - - opcache.consistency_checks (default "0") - - opcache.force_restart_timeout (default "180") - - opcache.error_log (default "" which means stderr) - - opcache.log_verbosity_level (default "1") - - opcache.preferred_memory_model (default "") - - opcache.protect_memory (default "0") - - opcache.mmap_base (Windows-only) ++- CURL: ++ CURL_HTTP_VERSION_2_0 and CURL_VERSION_HTTP2 (>= 5.6.8) ++ +- LDAP: + LDAP_ESCAPE_FILTER int(1) + LDAP_ESCAPE_DN int(2) + +- Pgsql: + PGSQL_DML_ESCAPE int(4096) + PGSQL_CONNECT_ASYNC + PGSQL_CONNECTION_STARTED + PGSQL_CONNECTION_MADE + PGSQL_CONNECTION_AWAITING_RESPONSE + PGSQL_CONNECTION_AUTH_OK + PGSQL_CONNECTION_SSL_STARTUP + PGSQL_CONNECTION_SETENV + PGSQL_POLLING_FAILED + PGSQL_POLLING_READING + PGSQL_POLLING_WRITING + PGSQL_POLLING_OK + PGSQL_POLLING_ACTIVE + +- OpenSSL: + STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT int(9) + STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT int(17) + STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT int(33) + STREAM_CRYPTO_METHOD_ANY_CLIENT int(63) + STREAM_CRYPTO_METHOD_TLSv1_0_SERVER int(8) + STREAM_CRYPTO_METHOD_TLSv1_1_SERVER int(16) + STREAM_CRYPTO_METHOD_TLSv1_2_SERVER int(32) + STREAM_CRYPTO_METHOD_ANY_SERVER int(62) + OPENSSL_DEFAULT_STREAM_CIPHERS string ======================================== -11. Windows Support +11. Changes to INI File Handling ======================================== -- The Apache 2.4 handler is supported as of PHP 5.5.0 +- Core: + Changed always_populate_raw_post_data to throw a deprecation warning when + enabled and to recognize the value -1 for never populating the global + $HTTP_RAW_POST_DATA variable, which will be default in future PHP versions. + + default_charset is set to UTF-8. It was empty previously. default_charset + is used where it is applicable. Iconv/Mbstring/htmlentities/htmlspecialchars/ + html_entity_decode use default_charset as default encoding. -- OPcache: Errors like 'unable to reattach to base address' could - happen in many common setups. It is due to some technical and - design restriction in the engine and could not be fixed easily - before 5.5.0 was released. + internal_encoding/input_encoding/output_encoding is added for encoding + handling modules. Refer to "Changes to encodings in PHP 5.6" in "11. Other Changes" + section for more details. - A possible fix is to tweak the opcache.mmap_base INI setting by - forcing the first address to be tried. +- cURL: + If the new openssl.cafile ini directive is specified ext/curl will give the + openssl path precedence over its own curl.cainfo directive. - For x86 version, the following addreses can be tried: - . 0x20000000, 0x21000000, 0x30000000, 0x31000000, 0x50000000 - and for x64 (still experimental): - . 0x0000100000000000, 0x0000200000000000, 0x0000300000000000, 0x0000700000000000 +- OpenSSL: + openssl.cafile and openssl.capath ini directives have been added to allow + global CA default specification as necessary. ======================================== 12. Other Changes