]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-5.5' into PHP-5.6
authorStanislav Malyshev <stas@php.net>
Mon, 23 Mar 2015 01:52:55 +0000 (18:52 -0700)
committerStanislav Malyshev <stas@php.net>
Mon, 23 Mar 2015 01:54:48 +0000 (18:54 -0700)
* PHP-5.5:
  add CURL_HTTP_VERSION_2_0 and CURL_VERSION_HTTP2

1  2 
NEWS
UPGRADING
ext/curl/interface.c

diff --cc NEWS
Simple merge
diff --cc UPGRADING
index 9428add450971fec8038eeb3386c95b404ae1ec9,7b51ae5e922a93aeaeee81fe573aa0e42e1ca86b..52f139de28939e2ab17cf5c564619490c8fa901f
+++ 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
Simple merge