xref: /PHP-5.5/UPGRADING (revision 98b9dfae)
22f6cebb2SIlia Alshanetsky
3885a4562SChristopher JonesPHP 5.5 UPGRADE NOTES
477e1a1abSChristopher Jones
50093980fSChristopher Jones1.  Backward Incompatible Changes
60093980fSChristopher Jones2.  New Features
70093980fSChristopher Jones2.  Changes in SAPI modules
80093980fSChristopher Jones3.  Deprecated Functionality
90093980fSChristopher Jones4.  Changed Functions
10b5003c3aSStanislav Malyshev    a. unserialize() change
110093980fSChristopher Jones5.  New Functions
120093980fSChristopher Jones6.  New Classes and Interfaces
130093980fSChristopher Jones7.  Removed Extensions
140093980fSChristopher Jones8.  Other Changes to Extensions
150093980fSChristopher Jones9.  New Global Constants
1677e1a1abSChristopher Jones10. Changes to INI File Handling
17e73beb82SAnatoliy Belsky11. Windows Support
18e73beb82SAnatoliy Belsky12. Other Changes
1984e34802SRasmus Lerdorf
202f6cebb2SIlia Alshanetsky
2184e34802SRasmus Lerdorf========================================
2277e1a1abSChristopher Jones1. Backward Incompatible Changes
2384e34802SRasmus Lerdorf========================================
2460835e30SHannes Magnusson
250093980fSChristopher Jones- Dropped Windows XP and 2003 support. (Pierre)
260093980fSChristopher Jones
270093980fSChristopher Jones- All internal case insensitivity handling for class, function and constant
280093980fSChristopher Jones  names is done according to ASCII rules.  Current locale settings are ignored.
290093980fSChristopher Jones
30184db665SStanislav Malyshev- self, parent & static keywords now are always case-insensitive (see bug
31184db665SStanislav Malyshev  #60833).
320093980fSChristopher Jones
330093980fSChristopher Jones- Removed Logo GUIDs: php_logo_guid(), php_egg_logo_guid(),
340093980fSChristopher Jones  php_real_logo_guid() and zend_logo_guid()
3570f83f35SDmitry Stogov
3677e1a1abSChristopher Jones========================================
3777e1a1abSChristopher Jones2. New Features
3877e1a1abSChristopher Jones========================================
392c2eaa08SSteph Fox
4035951d4bSXinchen Hui- Support list in foreach. (Laruence)
410093980fSChristopher Jones  (http://php.net/foreach#control-structures.foreach.list,
420093980fSChristopher Jones  http://wiki.php.net/rfc/foreachlist)
430093980fSChristopher Jones
44bf8ed470SChristopher Jones- Support "finally" keyword. (Laruence)
450093980fSChristopher Jones  (http://php.net/exceptions, http://wiki.php.net/rfc/finally)
460093980fSChristopher Jones
47565892d4SXinchen Hui- Support constant array/string dereferencing. (Laruence)
48bf8ed470SChristopher Jones  (http://php.net/manual/en/language.types.array.php,
49bf8ed470SChristopher Jones   https://wiki.php.net/rfc/constdereference)
500093980fSChristopher Jones
51ec061a93SNikita Popov- Add support for using empty() on the result of function calls and
52ec061a93SNikita Popov  other expressions. Thus it is now possible to write empty(getArray()),
53bf8ed470SChristopher Jones  for example. (http://php.net/manual/en/function.empty.php,
54bf8ed470SChristopher Jones  https://wiki.php.net/rfc/empty_isset_exprs)
550093980fSChristopher Jones
565246d6f0SGustavo André dos Santos Lopes- Added generators.
570093980fSChristopher Jones  (http://php.net/generators, https://wiki.php.net/rfc/generators)
580093980fSChristopher Jones
590093980fSChristopher Jones- ClassName::class syntax returning full class name for a class as a
60bf8ed470SChristopher Jones  string constant.  (http://php.net/oop5.basic,
610093980fSChristopher Jones  https://wiki.php.net/rfc/class_name_scalars)
620093980fSChristopher Jones
63fcc6611dSNikita Popov- Added support for non-scalar Iterator keys in foreach.
64bf8ed470SChristopher Jones  (http://php.net/manual/en/control-structures.foreach.php,
65bf8ed470SChristopher Jones  https://wiki.php.net/rfc/foreach-non-scalar-keys).
660093980fSChristopher Jones
670093980fSChristopher Jones- Bundled Zend OPcache extension to improve performance
680093980fSChristopher Jones  (http://php.net/manual/en/book.opcache.php,
690093980fSChristopher Jones  https://wiki.php.net/rfc/optimizerplus)
700093980fSChristopher Jones
710093980fSChristopher Jones- Added a simplified password hashing API
72bf8ed470SChristopher Jones  (http://php.net/password, https://wiki.php.net/rfc/password_hash)
732c2eaa08SSteph Fox
7477e1a1abSChristopher Jones========================================
7577e1a1abSChristopher Jones2. Changes in SAPI modules
7677e1a1abSChristopher Jones========================================
772c2eaa08SSteph Fox
780093980fSChristopher Jones- Support for changing the process's title in CLI/CLI-Server
79bf8ed470SChristopher Jones  SAPIs. (Keyur)
80bf8ed470SChristopher Jones  (http://php.net/manual/en/function.cli-set-process-title.php,
81bf8ed470SChristopher Jones  http://php.net/manual/en/function.cli-get-process-title.php,
82bf8ed470SChristopher Jones  https://wiki.php.net/rfc/cli_process_title)
830093980fSChristopher Jones
840093980fSChristopher Jones- Support for systemd in php-fpm: Add --with-fpm-systemd option to
850093980fSChristopher Jones  report health to systemd, and add systemd_interval option to
860093980fSChristopher Jones  configure this. The service can now use Type=notify in the systemd
870093980fSChristopher Jones  unit file. (Remi)
882c2eaa08SSteph Fox
89ba038302SAnatol Belski- Support for several XML MIME types in the built-in CLI server. For static
90ba038302SAnatol Belski  files with extensions .xml, .xsl, .xsd the Content-Type header
91ba038302SAnatol Belski  application/xml is now sent automatically.
92ba038302SAnatol Belski
9377e1a1abSChristopher Jones========================================
9477e1a1abSChristopher Jones3. Deprecated Functionality
9577e1a1abSChristopher Jones========================================
962c2eaa08SSteph Fox
970093980fSChristopher Jones- The original MySQL extension is now deprecated and will generate
980093980fSChristopher Jones  deprecation warnings when connecting to a database through
990093980fSChristopher Jones  mysql_connect(), mysql_pconnect() or by establishing an implicit
1000093980fSChristopher Jones  connection. Use MySQLi or PDO instead.
1010093980fSChristopher Jones
10277e1a1abSChristopher Jones- The preg_replace /e modifier is now deprecated.  Use
10377e1a1abSChristopher Jones  preg_replace_callback instead.
10477e1a1abSChristopher Jones  (https://wiki.php.net/rfc/remove_preg_replace_eval_modifier)
1050093980fSChristopher Jones
106ab4c270cSAdam Harvey- IntlDateFormatter::setTimeZoneID() and datefmt_set_timezone_id() are
1070093980fSChristopher Jones  deprecated. Use IntlDateFormatter::setTimeZone() or
1080093980fSChristopher Jones  datefmt_set_timezone() instead.
1090093980fSChristopher Jones
110ab4c270cSAdam Harvey- mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() and mcrypt_ofb() now throw
1110093980fSChristopher Jones  E_DEPRECATED. Their use was already previously discouraged in the
1120093980fSChristopher Jones  documentation, but that predated the existence of E_DEPRECATED.
1132c2eaa08SSteph Fox
11477e1a1abSChristopher Jones========================================
11577e1a1abSChristopher Jones4. Changed Functions
11677e1a1abSChristopher Jones========================================
1170fa42424SHannes Magnusson
1180093980fSChristopher Jones- pack()/unpack() had the following changes, which bring it more in
1190093980fSChristopher Jones  line with Perl's behavior: - Implemented format character "Z": NULL
1200093980fSChristopher Jones  padded string, with trailing NULL bytes removed.  - Changed format
1210093980fSChristopher Jones  character "a": this no longer removes trailing NULL bytes.  -
1220093980fSChristopher Jones  Changed format character "A": all trailing ASCII whitespace is now
1230093980fSChristopher Jones  removed (defined as spaces, tabs, \r, \n and NULL).
1240093980fSChristopher Jones
1250093980fSChristopher Jones- MessageFormatter::format() and related functions now accepted named
1260093980fSChristopher Jones  arguments and mixed numeric/named arguments in ICU 4.8+.
1270093980fSChristopher Jones
1280093980fSChristopher Jones- MessageFormatter::format() and related functions now don't error out
1290093980fSChristopher Jones  when an insufficient argument count is provided. Instead, the
1300093980fSChristopher Jones  placeholders will remain unsubstituted.
1310093980fSChristopher Jones
1320093980fSChristopher Jones- MessageFormatter::parse() and MessageFormat::format() (and their
1330093980fSChristopher Jones  static equivalents) now don't throw away better than second
1340093980fSChristopher Jones  precision in the arguments.
1350093980fSChristopher Jones
1360093980fSChristopher Jones- IntlDateFormatter::__construct and datefmt_create() now accept for
1370093980fSChristopher Jones  the $timezone argument time zone identifiers, IntlTimeZone objects,
1380093980fSChristopher Jones  DateTimeZone objects and NULL. It used to accept only time zone
1390093980fSChristopher Jones  identifiers and NULL.  Invalid time zone identifiers are no longer
1400093980fSChristopher Jones  accepted. Empty strings are no longer accepted.
1410093980fSChristopher Jones
142c22a29b5SGustavo André dos Santos Lopes- The default time zone used in IntlDateFormatter::__construct and
1430093980fSChristopher Jones  datefmt_create() (when the corresponding argument is not passed or
1440093980fSChristopher Jones  NULL is passed) is now the one given by date_default_timezone_get(),
1450093980fSChristopher Jones  not the default ICU time zone.
1460093980fSChristopher Jones
1470093980fSChristopher Jones- The time zone passed to the IntlDateFormatter is ignored if it is
1480093980fSChristopher Jones  NULL and if the calendar passed is an IntlCalendar object -- in this
1490093980fSChristopher Jones  case, the IntlCalendar's time zone will be used instead. Otherwise,
1500093980fSChristopher Jones  the time zone specified in the $timezone argument is used
1510093980fSChristopher Jones  instead. This does not affect old code, as IntlCalendar was
1520093980fSChristopher Jones  introduced in this version.
1530093980fSChristopher Jones
1540093980fSChristopher Jones- IntlDateFormatter::__construct and datefmt_create() now accept for
1550093980fSChristopher Jones  the $calendar argument also IntlCalendar objects.
1560093980fSChristopher Jones
1570093980fSChristopher Jones- IntlDateFormatter::getCalendar() and datefmt_get_calendar() return
1580093980fSChristopher Jones  false if the IntlDateFormatter was set up with an IntlCalendar
1590093980fSChristopher Jones  instead of the constants
1600093980fSChristopher Jones  IntlDateFormatter::GREGORIAN/TRADITIONAL. IntlCalendar did not exist
1610093980fSChristopher Jones  before this version.
1620093980fSChristopher Jones
1630093980fSChristopher Jones- IntlDateFormatter::setCalendar() and datefmt_set_calendar() now also
1640093980fSChristopher Jones  accept an IntlCalendar object, in which case its time zone is
1650093980fSChristopher Jones  taken. Passing a constant is still allowed, and still keeps the time
1660093980fSChristopher Jones  zone.
1670093980fSChristopher Jones
1684203e0a5SGustavo André dos Santos Lopes- IntlDateFormatter::format() and datefmt_format() now also accept an
1694203e0a5SGustavo André dos Santos Lopes  IntlCalendar object for formatting.
1700093980fSChristopher Jones
1715de79f9fSNikita Popov- set_error_handler(NULL) can now be used to reset the error handler.
1720093980fSChristopher Jones  Furthermore both set_error_handler(NULL) and
1730093980fSChristopher Jones  set_exception_handler(NULL) will now return the previously defined
1740093980fSChristopher Jones  error/exception handler. Previously bool(true) was returned.
1750093980fSChristopher Jones
1760093980fSChristopher Jones- setcookie(), setrawcookie() and ext/session now send Max-Age headers
1770093980fSChristopher Jones  alongside Expires headers. (see
1780093980fSChristopher Jones  https://wiki.php.net/rfc/cookie_max-age)
1790093980fSChristopher Jones
1800093980fSChristopher Jones- curl_setopt now accepts new option CURLOPT_SAFE_UPLOAD and CURLFile
1810093980fSChristopher Jones  object for safer file uploads (see
1820093980fSChristopher Jones  https://wiki.php.net/rfc/curl-file-upload)
1830093980fSChristopher Jones
1840093980fSChristopher Jones- Functions in the socket extension now do not emit warnings when the
1850093980fSChristopher Jones  errno is EAGAIN, EWOULDBLOCK or EINPROGRESS.
1860fa42424SHannes Magnusson
18783ced912SStanislav Malyshev- Since 5.5.2, spl_autoload_functions() returns different names for
18883ced912SStanislav Malyshev  different lambda functions registered via spl_autoload_register().
18983ced912SStanislav Malyshev
190473d6655SStanislav Malyshev- Since 5.5.3, DOMDocument::schemaValidateSource() and
191473d6655SStanislav Malyshev  DOMDocument::schemaValidate() accept flag parameter. Only flag
192473d6655SStanislav Malyshev  available now is LIBXML_SCHEMA_CREATE. Default is 0.
1930fa42424SHannes Magnusson
1942139d270SJoey Smith- Since 5.5.4, fputcsv() has fifth parameter escape_char, allowing to
1952139d270SJoey Smith  specify escape char.
1962139d270SJoey Smith
197*98b9dfaeSStanislav Malyshev- Since 5.5.38, getenv() has optional second parameter, making it only
198*98b9dfaeSStanislav Malyshev  consider local environment and not SAPI environment if true.
199*98b9dfaeSStanislav Malyshev
200b5003c3aSStanislav Malyshev4a. unserialize() change
201b5003c3aSStanislav Malyshev------------------------
202b5003c3aSStanislav Malyshev
203b5003c3aSStanislav Malyshev- Starting PHP 5.5.13, the bug fix for bug #67072 introduces a change to
204b5003c3aSStanislav Malyshev  unserialize() function, detailed below:
205b5003c3aSStanislav Malyshev
206b5003c3aSStanislav Malyshev    If the string looking like 'O:..:"ClassName":...' is unserialized, and
207b5003c3aSStanislav Malyshev    the class named is an internal class that declares custom unserializer
208b5003c3aSStanislav Malyshev    function, or extends such class, unserialize would fail.
209b5003c3aSStanislav Malyshev
210b5003c3aSStanislav Malyshev    Using O: for user classes not extending internal classes (including
211b5003c3aSStanislav Malyshev    those implementing Serializable) is still supported in 5.4, though
212b5003c3aSStanislav Malyshev    it is deprecated and may not be supported in 5.6 for classes that do not
213b5003c3aSStanislav Malyshev    originally serialize to O:. Same for using O: for internal classes
214b5003c3aSStanislav Malyshev    implementing Serializable (like ArrayObject) and classes that extend
215b5003c3aSStanislav Malyshev    them.
216b5003c3aSStanislav Malyshev
217b5003c3aSStanislav Malyshev    The reason for that is that O: format is meant to be used with classes
218b5003c3aSStanislav Malyshev    that do not define custom handlers, and was never intended for the use
219b5003c3aSStanislav Malyshev    with classes that do. When used with the class that relies on custom
220b5003c3aSStanislav Malyshev    unserializer, it can leave the object of such internal class in an
221b5003c3aSStanislav Malyshev    inconsistent state which has been observed to result in crashes and may
222b5003c3aSStanislav Malyshev    also lead to memory corruption and ultimately even arbitrary code
223b5003c3aSStanislav Malyshev    execution. This was never the intended use of unserializer, and mere
224b5003c3aSStanislav Malyshev    possibility of doing this constitutes a bug, since the data passed to
225b5003c3aSStanislav Malyshev    unserialize() is not a valid serialization of any object. Since there
226b5003c3aSStanislav Malyshev    are many applications applying unserialize() to untrusted data, this
227b5003c3aSStanislav Malyshev    presents a potential security vulnerability. Thus, keeping such bug in
228b5003c3aSStanislav Malyshev    the code base was considered too dangerous.
229b5003c3aSStanislav Malyshev
230b5003c3aSStanislav Malyshev    We are aware that some applications use O: format as a way to
231b5003c3aSStanislav Malyshev    instantiate classes. This was never the intended usage of serializer,
232b5003c3aSStanislav Malyshev    and ReflectionClass methods such as newInstance or
233b5003c3aSStanislav Malyshev    newInstanceWithoutConstructor can be used for that. We're working on
234b5003c3aSStanislav Malyshev    providing more comprehensive solution for such use cases in PHP 5.6 and
235b5003c3aSStanislav Malyshev    welcome the ideas in this area.
236b5003c3aSStanislav Malyshev
237b5003c3aSStanislav Malyshev    We note also that using unserialize() on any data that is not the result
238b5003c3aSStanislav Malyshev    of serialize() call continues to be an unsupported scenario and should
239b5003c3aSStanislav Malyshev    not be relied on to produce any specific result.
2403586d14bSAnatol Belski
24177e1a1abSChristopher Jones========================================
24277e1a1abSChristopher Jones5. New Functions
24377e1a1abSChristopher Jones========================================
2442c2eaa08SSteph Fox
2450eaa6e95SDavid Soria Parra- Core:
2466f17c624SStanislav Malyshev  - array_column()
2470eaa6e95SDavid Soria Parra  - boolval()
248f909e058SAdam Harvey  - password_get_info()
249f909e058SAdam Harvey  - password_hash()
250f909e058SAdam Harvey  - password_needs_rehash()
251f909e058SAdam Harvey  - password_verify()
2520eaa6e95SDavid Soria Parra
253a9d013bbSStanislav Malyshev- cURL:
254a9d013bbSStanislav Malyshev  - curl_file_create
255a9d013bbSStanislav Malyshev
256e26ea9dfSPierre Joye- GD
257e26ea9dfSPierre Joye  - imageflip
2587698bc57SPierre Joye  - imagecrop
2592024ff3bSPierre Joye  - imagecropauto
2601c662dc3SPierre Joye  - imagesetinterpolation
2611c662dc3SPierre Joye  - imageaffine
2621c662dc3SPierre Joye  - imageaffinematrixget
2631c662dc3SPierre Joye  - imageaffinematrixconcat
2641c662dc3SPierre Joye  - imagescale
265e26ea9dfSPierre Joye
266bf015489SAnthony Ferrara- Hash:
267bf015489SAnthony Ferrara  - hash_pbkdf2()
268bf015489SAnthony Ferrara
2690e8d928cSGustavo André dos Santos Lopes- Intl:
2704203e0a5SGustavo André dos Santos Lopes  - datefmt_format_object()
271c22a29b5SGustavo André dos Santos Lopes  - datefmt_get_calendar_object()
272c22a29b5SGustavo André dos Santos Lopes  - datefmt_get_timezone()
273c22a29b5SGustavo André dos Santos Lopes  - datefmt_set_timezone()
274c22a29b5SGustavo André dos Santos Lopes  - datefmt_get_calendar_object()
2750e8d928cSGustavo André dos Santos Lopes  - intlcal_create_instance()
2760e8d928cSGustavo André dos Santos Lopes  - intlcal_get_keyword_values_for_locale()
2770e8d928cSGustavo André dos Santos Lopes  - intlcal_get_now()
2780e8d928cSGustavo André dos Santos Lopes  - intlcal_get_available_locales()
2790e8d928cSGustavo André dos Santos Lopes  - intlcal_get()
2800e8d928cSGustavo André dos Santos Lopes  - intlcal_get_time()
2810e8d928cSGustavo André dos Santos Lopes  - intlcal_set_time()
2820e8d928cSGustavo André dos Santos Lopes  - intlcal_add()
2830e8d928cSGustavo André dos Santos Lopes  - intlcal_set_time_zone()
2840e8d928cSGustavo André dos Santos Lopes  - intlcal_after()
2850e8d928cSGustavo André dos Santos Lopes  - intlcal_before()
2860e8d928cSGustavo André dos Santos Lopes  - intlcal_set()
2870e8d928cSGustavo André dos Santos Lopes  - intlcal_roll()
2880e8d928cSGustavo André dos Santos Lopes  - intlcal_clear()
2890e8d928cSGustavo André dos Santos Lopes  - intlcal_field_difference()
2900e8d928cSGustavo André dos Santos Lopes  - intlcal_get_actual_maximum()
2910e8d928cSGustavo André dos Santos Lopes  - intlcal_get_actual_minimum()
2920e8d928cSGustavo André dos Santos Lopes  - intlcal_get_day_of_week_type()
2930e8d928cSGustavo André dos Santos Lopes  - intlcal_get_first_day_of_week()
2940e8d928cSGustavo André dos Santos Lopes  - intlcal_get_greatest_minimum()
2950e8d928cSGustavo André dos Santos Lopes  - intlcal_get_least_maximum()
2960e8d928cSGustavo André dos Santos Lopes  - intlcal_get_locale()
2970e8d928cSGustavo André dos Santos Lopes  - intlcal_get_maximum()
2980e8d928cSGustavo André dos Santos Lopes  - intlcal_get_minimal_days_in_first_week()
2990e8d928cSGustavo André dos Santos Lopes  - intlcal_get_minimum()
3000e8d928cSGustavo André dos Santos Lopes  - intlcal_get_time_zone()
3010e8d928cSGustavo André dos Santos Lopes  - intlcal_get_type()
3020e8d928cSGustavo André dos Santos Lopes  - intlcal_get_weekend_transition()
3030e8d928cSGustavo André dos Santos Lopes  - intlcal_in_daylight_time()
3040e8d928cSGustavo André dos Santos Lopes  - intlcal_is_equivalent_to()
3050e8d928cSGustavo André dos Santos Lopes  - intlcal_is_lenient()
3060e8d928cSGustavo André dos Santos Lopes  - intlcal_is_set()
3070e8d928cSGustavo André dos Santos Lopes  - intlcal_is_weekend()
3080e8d928cSGustavo André dos Santos Lopes  - intlcal_set_first_day_of_week()
3090e8d928cSGustavo André dos Santos Lopes  - intlcal_set_lenient()
3100e8d928cSGustavo André dos Santos Lopes  - intlcal_equals()
3110e8d928cSGustavo André dos Santos Lopes  - intlcal_get_repeated_wall_time_option()
3120e8d928cSGustavo André dos Santos Lopes  - intlcal_get_skipped_wall_time_option()
3130e8d928cSGustavo André dos Santos Lopes  - intlcal_set_repeated_wall_time_option()
3140e8d928cSGustavo André dos Santos Lopes  - intlcal_set_skipped_wall_time_option()
3156ea4d0d8SGustavo André dos Santos Lopes  - intlcal_from_date_time()
3166ea4d0d8SGustavo André dos Santos Lopes  - intlcal_to_date_time()
3170e8d928cSGustavo André dos Santos Lopes  - intlcal_get_error_code()
3180e8d928cSGustavo André dos Santos Lopes  - intlcal_get_error_message()
3190e8d928cSGustavo André dos Santos Lopes  - intlgregcal_create_instance()
3200e8d928cSGustavo André dos Santos Lopes  - intlgregcal_set_gregorian_change()
3210e8d928cSGustavo André dos Santos Lopes  - intlgregcal_get_gregorian_change()
3220e8d928cSGustavo André dos Santos Lopes  - intlgregcal_is_leap_year()
3230e8d928cSGustavo André dos Santos Lopes  - intltz_create_time_zone()
3240e8d928cSGustavo André dos Santos Lopes  - intltz_create_default()
3250e8d928cSGustavo André dos Santos Lopes  - intltz_get_id()
3260e8d928cSGustavo André dos Santos Lopes  - intltz_get_gmt()
3270e8d928cSGustavo André dos Santos Lopes  - intltz_get_unknown()
3280e8d928cSGustavo André dos Santos Lopes  - intltz_create_enumeration()
3290e8d928cSGustavo André dos Santos Lopes  - intltz_count_equivalent_ids()
3300e8d928cSGustavo André dos Santos Lopes  - intltz_create_time_zone_id_enumeration()
3310e8d928cSGustavo André dos Santos Lopes  - intltz_get_canonical_id()
3320e8d928cSGustavo André dos Santos Lopes  - intltz_get_region()
3330e8d928cSGustavo André dos Santos Lopes  - intltz_get_tz_data_version()
3340e8d928cSGustavo André dos Santos Lopes  - intltz_get_equivalent_id()
3350e8d928cSGustavo André dos Santos Lopes  - intltz_use_daylight_time()
3360e8d928cSGustavo André dos Santos Lopes  - intltz_get_offset()
3370e8d928cSGustavo André dos Santos Lopes  - intltz_get_raw_offset()
3380e8d928cSGustavo André dos Santos Lopes  - intltz_has_same_rules()
3390e8d928cSGustavo André dos Santos Lopes  - intltz_get_display_name()
3400e8d928cSGustavo André dos Santos Lopes  - intltz_get_dst_savings()
3416ea4d0d8SGustavo André dos Santos Lopes  - intltz_from_date_time_zone()
3426ea4d0d8SGustavo André dos Santos Lopes  - intltz_to_date_time_zone()
3430e8d928cSGustavo André dos Santos Lopes  - intltz_get_error_code()
3440e8d928cSGustavo André dos Santos Lopes  - intltz_get_error_message()
3450e8d928cSGustavo André dos Santos Lopes
3464203e0a5SGustavo André dos Santos Lopes  - IntlDateFormatter::formatObject()
347c22a29b5SGustavo André dos Santos Lopes  - IntlDateFormatter::getCalendarObject()
348c22a29b5SGustavo André dos Santos Lopes  - IntlDateFormatter::getTimeZone()
349c22a29b5SGustavo André dos Santos Lopes  - IntlDateFormatter::setTimeZone()
350c22a29b5SGustavo André dos Santos Lopes
3516fca805bSStanislav Malyshev- LDAP:
3526fca805bSStanislav Malyshev  - ldap_modify_batch() (5.5.10)
3536fca805bSStanislav Malyshev
3541b8d4695SStanislav Malyshev- SOAP:
3551b8d4695SStanislav Malyshev  - SoapClient::__getCookies() (5.5.14)
3561b8d4695SStanislav Malyshev
357a000920dSGustavo Lopes- Sockets:
358a000920dSGustavo Lopes  - socket_sendmsg()
359a000920dSGustavo Lopes  - socket_recvmsg()
360a000920dSGustavo Lopes  - socket_cmsg_space()
361a000920dSGustavo Lopes
3626c891f33SGustavo André dos Santos Lopes- SPL:
3636c891f33SGustavo André dos Santos Lopes  - SplFixedArray::__wakeup()
3646af1b084SEtienne Kneuss  - SplDoublyLinkedList::add()
3655027fa79SJoshua Thijssen  - RecursiveTreeIterator::getPostfix() (5.5.2)
3665027fa79SJoshua Thijssen  - RecursiveTreeIterator::setPostfix() (5.5.2)
3671d5e5086SGustavo André dos Santos Lopes
3680093980fSChristopher Jones- Zend OPcache:
369fd2b8df2SRasmus Lerdorf - opcache_get_configuration()
370fd2b8df2SRasmus Lerdorf - opcache_get_status()
371fd2b8df2SRasmus Lerdorf - opcache_reset()
372fd2b8df2SRasmus Lerdorf
37377e1a1abSChristopher Jones========================================
37477e1a1abSChristopher Jones6. New Classes and Interfaces
37577e1a1abSChristopher Jones========================================
3762c2eaa08SSteph Fox
3770e8d928cSGustavo André dos Santos Lopes- Intl:
3780e8d928cSGustavo André dos Santos Lopes  - IntlCalendar
3790e8d928cSGustavo André dos Santos Lopes  - IntlGregorianCalendar
3800e8d928cSGustavo André dos Santos Lopes  - IntlTimeZone
381794d2268SGustavo André dos Santos Lopes  - IntlBreakIterator
382794d2268SGustavo André dos Santos Lopes  - IntlRuleBasedBreakIterator
383794d2268SGustavo André dos Santos Lopes  - IntlCodePointBreakIterator
384a000920dSGustavo Lopes  - UConverter
3852c2eaa08SSteph Fox
386a9d013bbSStanislav Malyshev- cURL:
387a9d013bbSStanislav Malyshev  - CURLFile
388a9d013bbSStanislav Malyshev
38977e1a1abSChristopher Jones========================================
39077e1a1abSChristopher Jones7. Removed Extensions
39177e1a1abSChristopher Jones========================================
3922c2eaa08SSteph Fox
3930093980fSChristopher JonesNone
3942c2eaa08SSteph Fox
39577e1a1abSChristopher Jones========================================
39677e1a1abSChristopher Jones8. Other Changes to Extensions
39777e1a1abSChristopher Jones========================================
39837272e46SAdam Harvey
3996ea4d0d8SGustavo André dos Santos Lopes- Intl:
4006ea4d0d8SGustavo André dos Santos Lopes  - This extension now requires ICU 4.0+.
4014417421aSXinchen Hui- Phar:
4024417421aSXinchen Hui  - Added ability of resolving alias created by Phar::map
4032c2eaa08SSteph Fox
40477e1a1abSChristopher Jones========================================
40577e1a1abSChristopher Jones9. New Global Constants
40677e1a1abSChristopher Jones========================================
407d207e655SAdam Harvey
408d207e655SAdam Harvey- mysqli:
409713a3fc5SAndrey Hristov  - Added MYSQLI_SERVER_PUBLIC_KEY constant to be used with mysqli_options()
41084e34802SRasmus Lerdorf
411a9d013bbSStanislav Malyshev- cURL:
412a9d013bbSStanislav Malyshev  - Added CURLOPT_SAFE_UPLOAD to be used with curl_setopt().
413ce88a811SXinchen Hui  - Added CURL_WRAPPERS_ENABLED to reflect --with-curlwrappers.
4141badfd81SMasaki Kagaya  - Added CURL_HTTP_VERSION_2_0 and CURL_VERSION_HTTP2 in 5.5.24+.
415a9d013bbSStanislav Malyshev
4167698bc57SPierre Joye- GD
4177698bc57SPierre Joye  - Added constants for imageflip:
4187698bc57SPierre Joye    . IMG_FLIP_HORIZONTAL
4190093980fSChristopher Jones    . IMG_FLIP_VERTICAL
4207698bc57SPierre Joye    . IMG_FLIP_BOTH
4217698bc57SPierre Joye  - Added constants for imagecrop
4227698bc57SPierre Joye    . IMG_CROP_DEFAULT
4237698bc57SPierre Joye    . IMG_CROP_TRANSPARENT
4247698bc57SPierre Joye    . IMG_CROP_BLACK
4257698bc57SPierre Joye    . IMG_CROP_WHITE
4267698bc57SPierre Joye    . IMG_CROP_SIDES
4277698bc57SPierre Joye    . IMG_CROP_THRESHOLD
4280171bcb9SPierre Joye  - Added constants for imagesetinterpolation, used by imagescale
4291c662dc3SPierre Joye    imagerotate and imageaffine:
4301c662dc3SPierre Joye    . IMG_BELL
4311c662dc3SPierre Joye    . IMG_BESSEL
4321c662dc3SPierre Joye    . IMG_BILINEAR_FIXED
4331c662dc3SPierre Joye    . IMG_BICUBIC
4341c662dc3SPierre Joye    . IMG_BICUBIC_FIXED
4351c662dc3SPierre Joye    . IMG_BLACKMAN
4361c662dc3SPierre Joye    . IMG_BOX
4371c662dc3SPierre Joye    . IMG_BSPLINE
4381c662dc3SPierre Joye    . IMG_CATMULLROM
4391c662dc3SPierre Joye    . IMG_GAUSSIAN
4401c662dc3SPierre Joye    . IMG_GENERALIZED_CUBIC
4411c662dc3SPierre Joye    . IMG_HERMITE
4421c662dc3SPierre Joye    . IMG_HAMMING
4431c662dc3SPierre Joye    . IMG_HANNING
4441c662dc3SPierre Joye    . IMG_MITCHELL
4451c662dc3SPierre Joye    . IMG_POWER
4461c662dc3SPierre Joye    . IMG_QUADRATIC
4471c662dc3SPierre Joye    . IMG_SINC
4481c662dc3SPierre Joye    . IMG_NEAREST_NEIGHBOUR
4491c662dc3SPierre Joye    . IMG_WEIGHTED4
4501c662dc3SPierre Joye    . IMG_TRIANGLE
4510171bcb9SPierre Joye  - Added constants for imageaffinematrixget
4520171bcb9SPierre Joye    . IMG_AFFINE_TRANSLATE
4530171bcb9SPierre Joye    . IMG_AFFINE_SCALE
4540171bcb9SPierre Joye    . IMG_AFFINE_ROTATE
4550171bcb9SPierre Joye    . IMG_AFFINE_SHEAR_HORIZONTAL
4560171bcb9SPierre Joye    . IMG_AFFINE_SHEAR_VERTICAL
4577698bc57SPierre Joye
45877e1a1abSChristopher Jones========================================
45977e1a1abSChristopher Jones10. Changes to INI File Handling
46077e1a1abSChristopher Jones========================================
461d207e655SAdam Harvey
462389d41ccSStanislav Malyshev- Core:
4630093980fSChristopher Jones  - Added sys_temp_dir INI directive, for specifying temporary
4640093980fSChristopher Jones    directory.
465389d41ccSStanislav Malyshev
466d207e655SAdam Harvey- Intl:
4670093980fSChristopher Jones  - Added intl.use_exceptions INI directive, which controls what
4680093980fSChristopher Jones    happens when global errors are set together with intl.error_level.
469d207e655SAdam Harvey
470e7a00a25SVeres Lajos- MSSQL:
471e7a00a25SVeres Lajos  - mssql.compatability_mode renamed to mssql.compatibility_mode in 5.5.2,
472e7a00a25SVeres Lajos    old directive still supported for BC reasons.
473e7a00a25SVeres Lajos
474d207e655SAdam Harvey- mysqlnd:
4750093980fSChristopher Jones  - Added mysqlnd.sha256_server_public_key INI PERDIR setting that
4760093980fSChristopher Jones    affects all APIs which use(are built) for mysqlnd. This allows
4770093980fSChristopher Jones    ext/mysqli to be used with the new auth protocol, although at
4780093980fSChristopher Jones    coarser level.
479100228aaSPierre Joye
480e59143e8SStanislav Malyshev- Sessions:
481e59143e8SStanislav Malyshev  - Added session.use_strict_mode in 5.5.3, which prevents session
482e59143e8SStanislav Malyshev    fixation attacks and session collisions.
483e59143e8SStanislav Malyshev    See also https://wiki.php.net/rfc/strict_sessions
484e59143e8SStanislav Malyshev
4850093980fSChristopher Jones- Zend OPcache (See http://php.net/manual/en/book.opcache.php)
486fd2b8df2SRasmus Lerdorf  - Added the following directives:
487fd2b8df2SRasmus Lerdorf    - opcache.enable (default "1")
488fd2b8df2SRasmus Lerdorf    - opcache.memory_consumption (default "64")
489fd2b8df2SRasmus Lerdorf    - opcache.interned_strings_buffer (default "4")
490fd2b8df2SRasmus Lerdorf    - opcache.max_accelerated_files (default "2000")
491fd2b8df2SRasmus Lerdorf    - opcache.max_wasted_percentage (default "5")
492fd2b8df2SRasmus Lerdorf    - opcache.use_cwd (default "1")
493fd2b8df2SRasmus Lerdorf    - opcache.validate_timestamps (default "1")
494fd2b8df2SRasmus Lerdorf    - opcache.revalidate_freq (default "2")
495fd2b8df2SRasmus Lerdorf    - opcache.revalidate_path (default "0")
496fd2b8df2SRasmus Lerdorf    - opcache.save_comments (default "1")
497fd2b8df2SRasmus Lerdorf    - opcache.load_comments (default "1")
498fd2b8df2SRasmus Lerdorf    - opcache.fast_shutdown (default "0")
499fd2b8df2SRasmus Lerdorf    - opcache.enable_file_override (default "0")
500fd2b8df2SRasmus Lerdorf    - opcache.optimization_level (default "0xffffffff")
501fd2b8df2SRasmus Lerdorf    - opcache.inherited_hack (default "1")
502fd2b8df2SRasmus Lerdorf    - opcache.blacklist_filename (default "")
503fd2b8df2SRasmus Lerdorf    - opcache.max_file_size (default "0")
504fd2b8df2SRasmus Lerdorf    - opcache.consistency_checks (default "0")
505fd2b8df2SRasmus Lerdorf    - opcache.force_restart_timeout (default "180")
506fd2b8df2SRasmus Lerdorf    - opcache.error_log (default "" which means stderr)
507fd2b8df2SRasmus Lerdorf    - opcache.log_verbosity_level (default "1")
508fd2b8df2SRasmus Lerdorf    - opcache.preferred_memory_model (default "")
509fd2b8df2SRasmus Lerdorf    - opcache.protect_memory (default "0")
510fd2b8df2SRasmus Lerdorf    - opcache.mmap_base (Windows-only)
511fd2b8df2SRasmus Lerdorf
512e73beb82SAnatoliy Belsky========================================
513e73beb82SAnatoliy Belsky11. Windows Support
514e73beb82SAnatoliy Belsky========================================
515e73beb82SAnatoliy Belsky
5160093980fSChristopher Jones- The Apache 2.4 handler is supported as of PHP 5.5.0
5170093980fSChristopher Jones
5180093980fSChristopher Jones- OPcache: Errors like 'unable to reattach to base address' could
5190093980fSChristopher Jones  happen in many common setups.  It is due to some technical and
5200093980fSChristopher Jones  design restriction in the engine and could not be fixed easily
5210093980fSChristopher Jones  before 5.5.0 was released.
5220093980fSChristopher Jones
5230093980fSChristopher Jones  A possible fix is to tweak the opcache.mmap_base INI setting by
5240093980fSChristopher Jones  forcing the first address to be tried.
525e73beb82SAnatoliy Belsky
5260a6ec7a2SPierre Joye  For x86 version, the following addreses can be tried:
5270093980fSChristopher Jones        .  0x20000000, 0x21000000, 0x30000000, 0x31000000, 0x50000000
5280093980fSChristopher Jones  and for x64 (still experimental):
5290093980fSChristopher Jones        . 0x0000100000000000, 0x0000200000000000, 0x0000300000000000, 0x0000700000000000
530011e29a9SPierre Joye
53177e1a1abSChristopher Jones========================================
532e73beb82SAnatoliy Belsky12. Other Changes
53377e1a1abSChristopher Jones========================================
534d12f8d67SAndrew Faulds
5350093980fSChristopher Jones- If the APC or WinCache user cache APIs were used before, consider
5360093980fSChristopher Jones   these alternatives for PHP 5.5:
5370093980fSChristopher Jones
5380093980fSChristopher Jones  - APCu
5390093980fSChristopher Jones      - all supported OSes: http://pecl.php.net/package/APCu
5400093980fSChristopher Jones      - Windows: http://windows.php.net/downloads/pecl/releases/apcu/
5410093980fSChristopher Jones
5420093980fSChristopher Jones  - WinCache, Windows only: http://pecl.php.net/package/WinCache