Diff for /embedaddon/php/UPGRADING between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2012/02/21 23:47:51 version 1.1.1.2, 2012/05/29 12:34:34
Line 1 Line 1
 $Id$  $Id$
   
UPGRADE NOTES - PHP 5.3PHP 5.4 UPGRADE NOTES
   
1. Reserved words and classes===========
2. Changes made to existing functions0. Contents
3. Changes made to existing methods===========
4. Changes made to existing classes
5. Deprecated1. Changes to INI directives
6. Undeprecated2. Changes to reserved words and classes
7. Extensions:3. Changes to engine behavior
     a. moved out to PECL and actively maintained there4. Changes to existing functions
     b. no longer maintained5. Changes to existing classes
     c. with changed behaviour6. Changes to existing methods
     d. no longer possible to disable7. Deprecated Functionality
8. Changes in SAPI support8. Removed Functionality
9. Changes in INI directives     a. Removed features
10. Syntax additions     b. Removed functions
      c. Removed syntax
      d. Removed hash algorithms
 9. Extension Changes:
      a. Extensions no longer maintained
      b. Extensions with changed behavior
 10. Changes in SAPI support
 11. Windows support  11. Windows support
12. New in PHP 5.3:12. New in PHP 5.4:
     a. New libraries     a. New features
     b. New extensions     b. Syntax additions
     c. New stream wrappers     c. New functions
     d. New stream filters     d. New global constants
     e. New functions     e. New classes
     f. New global constants     f. New methods
     g. New classes     g. New hash algorithms
     h. New methods 
     i. New class constants 
   
 =============================  =============================
1. Reserved words and classes1. Changes to INI directives
 =============================  =============================
   
- **namespace** and **goto** are now reserved keywords.- PHP 5.4 now checks at compile time if /dev/urandom or /dev/arandom
   are present.  If either is available, session.entropy_file now
   defaults to that file and session.entropy_length defaults to 32.
   This provides non-blocking entropy to session id generation.  If you
   do not want extra entropy for your session ids, add:
   
- **Closure** is now a reserved class. (Used by lambda and closure.)    session.entropy_file=
     session.entropy_length=0
   
=====================================  to your php.ini to preserve pre-PHP 5.4 behavior.
2. Changes made to existing functions 
===================================== 
   
- Paths containing NULL (like /some/path\0foo.txt) are now considered invalid. - Deprecated php.ini directives will now throw an E_CORE_WARNING's
  See http://news.php.net/php.internals/50191  instead of the previous E_WARNING's.
   
- The HTTP stream wrapper now considers all status codes from 200 to 399 to be- The following php.ini directives are no longer available in PHP 5.4
  successful.  and will now throw an E_CORE_ERROR upon startup:
   - allow_call_time_pass_reference
   - define_syslog_variables
   - highlight.bg
   - magic_quotes_gpc
   - magic_quotes_runtime
   - magic_quotes_sybase
   - register_globals
   - register_long_arrays
   - safe_mode
   - safe_mode_gid
   - safe_mode_include_dir
   - safe_mode_exec_dir
   - safe_mode_allowed_env_vars
   - safe_mode_protected_env_vars
   - session.bug_compat_42
   - session.bug_compat_warn
   - y2k_compliance
   - zend.ze1_compatibility_mode
   
- The array functions natsort(), natcasesort(), usort(), uasort(), uksort(),- the following new php.ini directives were added:
  array_flip(), and array_unique() no longer accept objects passed as arguments.  - max_input_vars - specifies how many GET/POST/COOKIE input
  If you need to use them to access an object's properties, you must cast the    variables may be accepted. The default value is 1000.
  object to an array first. 
   
- var_dump() output now includes private object members.- E_ALL now includes E_STRICT.
   
- session_start() now returns FALSE when the session startup fails.- The recommended production value for error_reporting changed to E_ALL &
   ~E_DEPRECATED & ~E_STRICT.
   
- property_exists() now checks the existence of a property independent of- Added new session support directives:
  accessibility (like method_exists()).    session.upload_progress.enabled
     session.upload_progress.cleanup
     session.upload_progress.prefix
     session.upload_progress.name
     session.upload_progress.freq
     session.upload_progress.min_freq
   
- The $initial parameter for array_reduce can now be of any type.- Added a zend.multibyte directive as a replacement of the PHP compile time
   configuration option --enable-zend-multibyte.  Now the Zend Engine always
   contains code for multibyte support, which can be enabled or disabled at
   runtime.  Note: It doesn't make a lot of sense to enable this option if
   ext/mbstring is not enabled, because most functionality is implemented by
   mbstrings callbacks.
   
- clearstatcache() no longer clears the realpath cache by default.- Added zend.script_encoding. This value will be used unless a
   "declare(encoding=...)" directive appears at the top of the script.
   
- realpath() is no longer system-dependent and works identically on all- Added zend.signal_check to check for replaced signal handlers on shutdown
  platforms. 
   
- call_user_func() now propagates $this even if the callee is the parent class.- Added enable_post_data_reading, which is enabled by default. When it's
   disabled, the POST data is not read (or processed); the behavior is similar
   to that of other request methods with body, like PUT. This allows reading
   the raw POST data in multipart requests and reading/processing the POST data
   in a stream fashion (through php://input) without having it copied in memory
   multiple times.
   
- The filesystem functions opendir(), scandir(), and dir() now use the default- Added windows_show_crt_warning.  This directive shows the CRT warnings when
  context if no context argument is passed.  enabled. These warnings were displayed by default until now. It is disabled
   by default.
   
- The behaviour of functions with by-reference parameters called by value has- Added cli.pager to set a pager for CLI interactive shell output.
  changed. Where previously the function would accept the by-value argument, a 
  warning is now emitted and all by-ref parameters are set to NULL. 
   
- There is now native support for the following math functions: asinh(),- Added cli.prompt to configure the CLI interactive shell prompt.
  acosh(), atanh(), log1p(), and expm1(). 
   
- In the GD extension, there is now pixelation support available through- Added cli_server.color to enable the CLI web server to use ANSI color coding
  the imagefilter() function.  in terminal output.
   
- crypt() now has Blowfish and extended DES support, and crypt() features are========================================
  now 100% portable. PHP has its own internal crypt implementation which drops2. Changes to reserved words and classes
  into place when system support for crypt or crypt_r() is not found.========================================
   
- get_cfg_var() is now able to return "array" INI options.- "callable", "insteadof" and "trait" are now reserved words.
   
- Stream wrappers can now be used by the include_path INI directive.=============================
 3. Changes to engine behavior
 =============================
   
- These functions now take new parameters:- The __construct arguments of an extended abstract constructor must
     clearstatcache(): $clear_realpath_cache and $filename.  now match:
     copy(): $context 
     fgetcsv(): $escape 
     ini_get_all(): $details 
     json_encode(): $options 
     json_decode(): $depth 
     nl2br(): $is_xhtml 
     parse_ini_file(): $scanner_mode 
     round(): $mode 
     stream_context_create(): $params 
     strstr(), stristr(): $before_needle 
     sybase_connect(): $new 
   
- And new mode option for fopen: 'n' (O_NONBLOCK)  abstract class Base
   {
     abstract public function __construct();
   }
   class Foo extends Base
   {
     public function __construct($bar) {}
   }
   
- The new mysqlnd library necessitates using MySQL's newer 41-byte password  This now emits a Fatal error due the incompatible declaration.
  format. Continued use of the old 16 byte passwords will cause mysql_connect() 
  and other related functions to produce the following error message: 
  "mysqlnd cannot connect to MySQL 4.1+ using old authentication" 
   
- The dl() function is now disabled by default, and only available under the- In previous versions, superglobal names could be used for parameter
  cli, cgi, and embed SAPIs.  names, thereby shadowing the corresponding superglobal. In PHP 5.4
   this now causes a fatal error such as "Cannot re-assign auto-global
   variable GLOBALS".
   
- mail() now supports the logging of sent mail.- Turning null, false or an empty string into an object by adding a
   property will now emit a warning instead of an E_STRICT error.
   
- stream_select(), stream_set_blocking(), stream_set_timeout(), and   $test = null;
  stream_set_write_buffer() now work with user-space stream wrappers.  $test->baz = 1;
   
- getopt() accepts "long options" now on all platforms.  To create a generic object you can use StdClass:
  Optional values and using = as a separator for short options are now 
  supported. 
   
     $test = new StdClass;
     $test->baz = 1;
   
===================================- Converting an array to a string now will cause an E_NOTICE warning.
3. Changes made to existing methods 
=================================== 
   
- The magic methods __get(), __set(), __isset(), __unset(), and __call() should- Non-numeric string offsets, e.g. $a['foo'] where $a is a string, now
  always be public and can no longer be static. Method signatures are enforced.  return false on isset() and true on empty(), and produce warning if
   trying to use them.  Offsets of types double, bool and null produce
   notice. Numeric strings ($a['2']) still work as before.
   
- The __call() magic method is now invoked on access to private and protected  Note that offsets like '12.3' and '5 and a half' are considered
  methods.  non-numeric and produce warning, but are converted to 12 and 5
   respectively for backwards compatibility reasons.
   
- The __toString() magic method can no longer accept arguments.- Closures now support scopes and $this and can be rebound to
   objects using Closure::bind() and Closure::bindTo().
   
- There is a new magic method, __callStatic().- <?= is now always available regardless of the short_open_tag
   setting.
   
- Internal count() vs. count_elements() handler resolution rules have changed.- Parse error messages are changed to contain more information about
  (This could potentially break custom PHP extensions.)  the error.
   
- The trailing / has been removed from SplFileInfo and other related directory================================
  classes.4. Changes to existing functions
 ================================
   
- SplFileInfo::getpathinfo() now returns information about the path name.- array_combine now returns array() instead of FALSE when two empty arrays are
   provided as parameters.
   
- There are new parameters in:- dns_get_record() has an extra parameter which allows requesting DNS records
     Exception::__construct(): $previous  by numeric type and makes the result include only the raw data of the
   response.
   
===================================- call_user_func_array() no longer allows call-time pass by reference.
4. Changes made to existing classes 
=================================== 
   
- SplObjectStorage now has ArrayAccess support. It is also now possible to- the default character set for htmlspecialchars() and htmlentities() is
  store associative information with objects in SplObjectStorage.  now UTF-8. In previous versions it was ISO-8859-1. Note that changing
    your output charset via the php.ini default_charset directive does not
=====================  affect htmlspecialchars/htmlentities unless you are passing "" (an 
4.1 New in PHP 5.3.9  empty string) as the encoding parameter to your htmlspecialchars/htmlentities
=====================  calls. 
   
- Write operations within XSLT (for example with the extension sax:output) are- htmlentities() and htmlspecialchars() are stricter in the code units they
  disabled by default. You can define what is forbidden with the INI option  accept for the asian encodings. For Big5-HKSCS, the octets 0x80 and 0xFF are
  xsl.security_prefs. This option will be marked as deprecated in 5.4 again.   rejected.  For GB2312/EUC-CN, the octets 0x8E, 0x8F, 0xA0 and 0xFF are
  Use the method XsltProcess::setSecurityPrefs($options) there.  rejected. For SJIS, the octets 0x80, 0xA0, 0xFD, 0xFE and 0xFF are rejected,
   except maybe after a valid starting byte. For EUC-JP, the octets 0xA0 and
   0xFF are rejected.
   
- the following new directives were added- htmlentities() now emits an E_STRICT warning when used with asian characters,
   as in that case htmlentities has (and already had before this version) the
   same functionality as htmlspecialchars.
   
  - max_input_vars - specifies how many GET/POST/COOKIE input variables may be- htmlentities() no longer numerically encodes high characters for single-byte
    accepted. default value 1000.   encodings (except when there's actually a corresponding named entity). This
   behavior was not documented and was inconsistent with that for "UTF-8".
   
=============- html_entity_decode() and htmlspecialchars_decode() behave more consistently,
5. Deprecated  now decoding entities in malformed strings such as "&&amp;" or "&#&amp;".
============= 
   
- define_syslog_variables() is deprecated.- htmlentities(), htmlspecialchars(), html_entity_decode(), and
   htmlspecialchars_decode: Added the flags ENT_HTML401, ENT_XML1, ENT_XHTML,
   and ENT_HTML5. The behavior of these functions including, but not limited to,
   the characters that are encoded and the entities that are decoded depend on
   the document type that is specified by those flags.
   
- set_socket_blocking() is deprecated.- htmlentities() and htmlspecialchars() with !$double_encode do more strict
   checks on the validity of the entities. Numerical entities are checked for a
   valid range (0 to 0x10FFFF); if the flag ENT_DISALLOWED is given, the
   validity of such numerical entity in the target document type is also
   checked.  Named entities are checked for necessary existence in the target
   document type instead of only checking whether they were constituted by
   alphanumeric characters.
   
- call_user_method() and call_user_method_array() are now deprecated. Use- The flag ENT_DISALLOWED was added. In addition to the behavior described in
  call_user_func() and call_user_func_array() instead.  the item before, it also makes htmlentities() and htmlspecialchars()
   substitute characters that appear literally in the argument string and which
   are not allowed in the target document type with U+FFFD (UTF-8) or &#xFFFD;.
   
- dl() is deprecated.- The flag ENT_SUBSTITUTE was added. This flag makes invalid multibyte
   sequences be replaced by U+FFFD (UTF-8) or &#FFFD; by htmlspecialchars() and
   htmlentities(). It is an alternative to the default behavior, which just
   returns an empty string and to ENT_IGNORE, which is a security risk. The
   behavior follows the recommendations of Unicode Technical Report #36.
   
- The set_magic_quotes_runtime() function is now deprecated.- htmlspecialchars_decode() and html_entity_decode() now decode &apos; if the
   document type is ENT_XML1, ENT_XHTML, or ENT_HTML5.
   
- mysql_listtables(), mysql_dropdb(), mysql_createdb(), mysql_list_tables(),- Charset detection with $charset == '' no longer turns to mbstring's
  mysql_drop_db(), and mysql_create_db() are now deprecated.  internal encoding defined through mb_internal_encoding(). Only the encoding
   defined through the php.ini setting mbstring.internal_encoding is considered.
   
- All ereg functions are now deprecated and emit E_DEPRECATED errors:- number_format() no longer truncates multibyte decimal points and thousand
  sql_regcase(), spliti(), split(), ereg_replace(), eregi(),  separators to the first byte.
  ereg_replace(), and ereg(). 
  Use the PCRE family of functions (preg_*()) instead. 
   
- mcrypt_generic_end() is deprecated.- The third parameter ($matches) to preg_match_all() is now optional. If
   omitted, the function will simply return the number of times the pattern was
   matched in the subject and will have no other side effects.
   
- mysql_db_query() is deprecated.- The second argument of scandir() now accepts SCANDIR_SORT_NONE (2) as a
   possible value. This value results in scandir() performing no sorting: on
   local filesystems, this allows files to be returned in native filesystem
   order.
   
- mysql_escape_string() is deprecated.- stream_select() now preserves the keys of the passed array, be they numeric or
   strings. This breaks code that iterated the resulting stream array using a
   numeric index, but makes easier to identify which of the passed streams are
   present in the result.
   
- session_register(), session_unregister(), and session_is_registered() are now- stream_set_write_buffer() no longer disables the read buffer of a plain
  deprecated. Use the $_SESSION superglobal array instead.  stream when 0 is given as the second argument.
   
- Comments starting with '#' are now deprecated in .INI files.- stream_set_write_buffer() no longer changes the chunk size in socket streams.
   
- The following INI directives will now emit an E_DEPRECATED warning - fclose() closes streams with resource refcount > 1; it doesn't merely
  upon startup if they are activated:  decrement the resource refcount.
   
        - define_syslog_variables- socket_set_options() and socket_get_options() now support multicast options.
        - register_globals 
        - register_long_arrays 
        - safe_mode 
        - magic_quotes_gpc 
        - magic_quotes_runtime 
        - magic_quotes_sybase 
   
- The is_dst parameter to mktime() is deprecated.- The raw data parameter in openssl_encrypt() and openssl_decrypt() is now an
   options integer rather than a boolean. A value of true produces the same
   behavior.
   
- Assigning the return value of "new" by reference is deprecated- Write operations within XSLT (for example with the extension sax:output) are
   disabled by default. You can define what is forbidden with the method
   XsltProcess::setSecurityPrefs($options).
   
- Call-time pass-by-reference has been deprecated- Added AES support to OpenSSL.
   
- Usage of {} to access string offsets is deprecated- openssl_csr_new() expects the textual data to be in UTF-8.
   
- Passing locale category name as string to setlocale() is deprecated.- Added no-padding option to openssl_encrypt() and openssl_decrypt().
   
===============- Added a "no_ticket" SSL context option to disable the SessionTicket TLS
6. Undeprecated  extension.
=============== 
   
- By popular request, is_a() is no longer deprecated.- Added new json_encode() options: JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES,
   JSON_NUMERIC_CHECK, JSON_BIGINT_AS_STRING, JSON_UNESCAPED_UNICODE.
   
==============- Added Tokyo Cabinet and Berkley DB 5 support to DBA extension.
7. Extensions: 
============== 
   
     a. moved out to PECL and actively maintained there- Added support for CURLOPT_MAX_SEND_SPEED_LARGE and CURLOPT_MAX_RECV_SPEED_LARGE
   to cURL.
   
        - fdf- Added optional argument to debug_backtrace() and debug_print_backtrace()
        - ming  to limit the amount of stack frames returned.
        - ncurses 
   
     b. no longer maintained- Fixed crypt_blowfish handling of 8-bit characters. crypt() in Blowfish mode
   now supports hashes marked $2a$, $2x$, $2y$ and $2z$.
   
        - dbase- mbstring now supports following encodings: Shift_JIS/UTF-8 Emoji,
        - fbsql  JIS X0213:2004 (Shift_JIS-2004, EUC-JP-2004, ISO-2022-JP-2004),
        - msql  MacJapanese (Shift_JIS), gb18030.
        - sybase (use sybase_ct, which is still in PHP core) 
        - mhash (hash has full BC layer) 
        - mime_magic (use fileinfo, has full BC layer) 
   
     c. with changed behaviour- Added encode and decode in hex format to mb_encode_numericentity() and
   mb_decode_numericentity().
   
        - dns: dns_check_record() will now return an extra "entries" index,- Added support for SORT_NATURAL and SORT_FLAG_CASE in array sort functions:
          containing the TXT elements.  sort(), rsort(), ksort(), krsort(), asort(), arsort() and array_multisort().
   
        - datetime: date/time functions will no longer use the TZ environment- is_a() and is_subclass_of() now have third boolean parameter, which specifies
          variable to guess which timezone should be used.  if the first argument can be a string class name. Default if false for is_a
   and true for is_subclass_of() for BC reasons.
   
        - cURL now supports SSH- ob_start() will now treat a chunk size of 1 as meaning 1 byte, rather than
   the previous special case behavior of treating it as 4096 bytes.
   
        - hash: The SHA-224 and salsa hash algorithms are now supported.- idn_to_ascii() and idn_to_utf8() now take two extra parameters, one indicating
   the variant (IDNA 2003 or UTS #46) and another, passed by reference, to return
   details about the operation in case UTS #46 is chosen.
   
        - mbstring: Now supports CP850 encoding.- gzencode() used with FORCE_DEFLATE now generates RFC1950 compliant data.
   
        - oci8: Database Resident Connection Pooling (DRCP) and Fast Application- ob_start() no longer starts multiple output buffers when passed
          Notification (FAN) are now supported.  array("callback1", "callback2", "callback3", ...).
   
          Oracle External Authentication is now supported (except on Windows).==============================
 5. Changes to existing classes
 ==============================
   
          The oci8 function oci_bind_by_name() now supports SQLT_AFC (aka the- Classes that implement stream wrappers can define a method called
          CHAR datatype).  stream_truncate that will respond to truncation, e.g. through ftruncate.
   Strictly speaking, this is an addition to the user-space stream wrapper
   template, not a change to an actual class.
   
          Calling oci_close() on a persistent connection, or when the variable- Classes that implement stream wrappers can define a method called
          that references a persistent connection goes out of scope, will now  stream_metadata that will be called on touch(), chmod(), chgrp(), chown().
          trigger a roll back of an uncommitted transaction. To avoid unexpected 
          behavior explicitly issue a commit or roll back as needed. The old 
          behavior can be enabled with the INI directive 
          oci8.old_oci_close_semantics. 
   
        - openssl: OpenSSL digest and cipher functions are now supported.- Arrays cast from SimpleXMLElement now always contain all nodes instead of
          It is also now possible to access the internal values of DSA, RSA and  just the first matching node.
          DH keys. 
   
        - session: Sessions will no longer store session-files in "/tmp" when- All SimpleXMLElement children are now always printed when using var_dump(),
          open_basedir restrictions apply, unless "/tmp" is explicitly added to  var_export(), and print_r().
          the list of allowed paths. 
   
        - SOAP: Now supports sending user-supplied HTTP headers.- Added iterator support in MySQLi. mysqli_result implements Traversable.
   
        - MySQLi: Now supports persistent connections by prepending the hostname ==============================
          with "p:".6. Changes to existing methods
 ==============================
   
        - imagepstext now rejects invalid antialiasing steps and raises a warning.- DateTime::parseFromFormat() now has a "+" modifier to allow trailing text in
   the string to parse without throwing an error.
   
     d. no longer possible to disable- Added the ability to pass options to DOMDocument::loadHTML().
   
        - PCRE- FilesystemIterator, GlobIterator and (Recursive)DirectoryIterator now use
        - Reflection  the default stream context.
        - SPL 
   
=====================================================
8. Changes in SAPI support7. Deprecated Functionality
=====================================================
   
- A new "litespeed" SAPI is now available.- The following functions are deprecated in PHP 5.4:
   - mcrypt_generic_end():       use mcrypt_generic_deinit() instead
   - mysql_list_dbs()
   
- FastCGI is now always enabled and can not be disabled. See sapi/cgi/CHANGES========================
  for more details.8. Removed Functionality
 ========================
   
- A new CGI SAPI option, -T, can be used to measure execution time of a scripta. Removed features
  repeated several times. 
  
- CGI/FastCGI now has support for .htaccess style user-defined php.ini files. 
  See the new user_ini.filename and user_ini.cache_ttl INI directives. 
   
============================   The following features have been removed from PHP 5.4:
9. Changes in INI directives 
============================ 
   
- zend_extension_debug and zend_extension_ts have been removed. Always use the   - Magic quotes
  zend_extension directive to load Zend Extensions.   - Register globals
    - Safe mode
    - Session extension bug compatibility mode
    - Y2K compliance mode
   
- zend.ze1_compatibility_mode has been removed. If this INI directive is set tob. Removed functions
  on, then an E_ERROR is emitted at startup. 
   
- There is now support for special sections: [PATH=/opt/httpd/www.example.com/]   The following functions are no longer available in PHP 5.4:
  and [HOST=www.example.com]. Directives set in these sections cannot be 
  overridden by user-defined INI files or at runtime. 
   
- Added mbstring.http_output_conv_mimetype. This directive specifies the   - define_syslog_variables()
  regex pattern of content types for which mb_output_handler() is activated.   - import_request_variables()
    - session_is_registered()
    - session_register()
    - session_unregister()
    - set_magic_quotes_runtime()
    - mysqli_bind_param() (alias of mysqli_stmt_bind_param())
    - mysqli_bind_result() (alias of mysqli_stmt_bind_result())
    - mysqli_client_encoding() (alias of mysqli_character_set_name())
    - mysqli_fetch() (alias of mysqli_stmt_fetch())
    - mysqli_param_count() (alias of mysqli_stmt_param_count())
    - mysqli_get_metadata() (alias of mysqli_stmt_result_metadata())
    - mysqli_send_long_data() (alias of mysqli_stmt_send_long_data())
    - mysqli::client_encoding() (alias of mysqli::character_set_name)
    - mysqli_stmt::stmt() (never worked/always throws, undocumented)
   
- It is now possible to use the full path to load modules using the "extension"c. Removed syntax
  directive. 
   
- "INI variables" can now be used almost anywhere in a php.ini file.   - break $var;
    - continue $var;
   
- It is now possible to use alphanumeric or variable indices in INI optiond. Removed hash algorithms
  arrays. 
   
- open_basedir is now PHP_INI_ALL   - Salsa10 and Salsa20, which are actually stream ciphers
   
- Runtime tightening of open_basedir restrictions is now possible.====================
 9. Extension Changes
 ====================
   
- The default value of session.use_only_cookies has changed to "1".a. Extensions no longer maintained
   
- The default value of oci8.default_prefetch has been changed from 10 to 100.   - ext/sqlite is no longer part of the base distribution and has been moved
      to PECL.  Use sqlite3 or PDO_SQLITE instead.
   
- A new directive, request_order, controls the behavior of $_REQUESTb. Extensions with changed behavior
  independently of variables_order. 
- A new directive, called windows.show_crt_warning, has been introduced. 
  This directive shows the CRT warnings when enabled. These warnings were 
  displayed by default until now. It is disabled by default. 
   
- New INI directives:    - The MySQL extensions (ext/mysql, mysqli and PDO_MYSQL) use mysqlnd
  - mail.add_x_header     as the default library now. It is still possible to use libmysql by
  - user_ini.filename     specifying a path to the configure options.
  - user_ini.cache_ttl 
  - exit_on_timeout 
  - mysqli.allow_persistent 
  - mysqli.default_host 
  - mysqli.default_socket 
  - mysqli.allow_local_infile 
  - mysqli.cache_size 
  - oci8.connection_class 
  - oci8.events 
  - pdo_mysql.default_socket 
  - pdo_mysql.cache_size 
  - sqlite3.extension_dir 
  - mysql.default_socket 
  - mysql.allow_local_infile 
  - mysql.cache_size 
  - mysqlnd.collect_statistics 
  - mysqlnd.collect_memory_statistics 
  - mysqlnd.net_cmd_buffer_size 
  - mysqlnd.net_read_buffer_size 
  - mysqlnd.log_mask 
   
      - PDO_MYSQL: Support for linking with MySQL client libraries older
        than 4.1 is removed.
   
====================   - The session extension now can hook into the file upload feature
10. Syntax additions     in order to provide upload progress information through session
====================     variables.
   
- NOWDOC: Similar to HEREDOC, but with single quotes:   - SNMP extension
      - Functions in SNMP extension now returns FALSE on every error
        condition including SNMP-related (no such instance, end of MIB,
        etc). Thus, in patricular, breaks previous behavior of get/walk
        functions returning an empty string on SNMP-related errors.
      - Multi OID get/getnext/set queries are now supported.
      - New constants added for use in snmp_set_oid_output_format()
        function.
      - Function snmp_set_valueretrieval() changed it's behavior:
             SNMP_VALUE_OBJECT can be combined with one of
             SNMP_VALUE_PLAIN or SNMP_VALUE_LIBRARY resulting OID value
             changes. When no SNMP_VALUE_PLAIN or SNMP_VALUE_LIBRARY
             is supplied with SNMP_VALUE_OBJECT, SNMP_VALUE_LIBRARY is used.
             Prior to 5.4.0 when no SNMP_VALUE_PLAIN or SNMP_VALUE_LIBRARY
             was supplied with SNMP_VALUE_OBJECT, SNMP_VALUE_PLAIN was used.
      - Added feature-rich OO API (SNMP class)
      - Dropped UCD-SNMP compatibility code. Consider upgrading to
        net-snmp v5.3+. Net-SNMP v5.4+ is required for Windows version.
      - In sake of adding support for IPv6 DNS name resolution of
        remote SNMP agent (peer) is done by extension now, not by Net-SNMP
        library anymore.
   
      <<<'LABEL' ...   - Date extension
      - Setting the timezone with the TZ environment variable is no longer
        supported, instead date.timezone and/or date_default_timezone_set()
        have to be used.
      - The extension will no longer guess the default timezone if none
        is set with date.timezone and/or date_default_timezone_set().
        Instead it will always fall back to "UTC".
   
  Static HEREDOCs can be used to initialize static variables and class members   - Hash extension
  or constants:     - the output of the tiger hash family has been corrected, see
        https://bugs.php.net/61307
   
      static $foo = <<<LABEL===========================
      No variables here...10. Changes in SAPI support
      LABEL;===========================
   
- HEREDOC now supports wrapping the identifier with double-quotes, to complement- A REQUEST_TIME_FLOAT value returns a floating point number indicating the
  the NOWDOC syntax:  time with microsecond precision.  All SAPIs providing this value should be
   returning float and not time_t.
   
      <<<"LABEL" ...- apache_child_terminate(), getallheaders(), apache_request_headers()
   and apache_response_headers() are now supported on FastCGI.
   
- The ?: operator has been introduced:- The interactive shell allows a shortcut #inisetting=value to change php.ini
   settings at run-time.
   
      var_dump(0 ?: 'Hello!');- The interactive shell now works with the shared readline extension.
   
- Namespaces were added:- The interactive shell no longer terminates on fatal errors.
   
      namespace my\name;- A new PHP CLI command line option --rz <name> shows information about the
      $obj = new \my\name\MyClass;  named Zend extension.
   
- Dynamic access to static methods is now possible:===================
 11. Windows support
 ===================
   
      $foo::myFunc();- is_link now works properly for symbolic links on Windows Vista
   or later. Earlier systems do not support symbolic links.
   
- Exceptions can now be nested:==================
 12. New in PHP 5.4
 ==================
   
      class MyCustomException extends Exception {}a. New Features
      try {
          throw new MyCustomException("Something happend", 112);  - A built-in CLI web server for testing purposes is now available:
      } catch(Exception $e) {     $ php -S 127.0.0.1:8888
          throw new InvalidArgumentException("You are doing it wrong!", 911, $e);
   - File Upload Progress support is implemented in the Session extension.
 
 b. Syntax additions
 
   - Traits:
       trait HelloWorld {
           public function sayHello() {
               echo 'Hello World!';
           }
       }        }
   
- Exceptions can now be handled in destructors.      class CanIGetHello {
           use HelloWorld;
       }
   
- A garbage collector has been added and is enabled by default.      $hello = new CanIGetHello();
       $hello->sayHello();
   
===================  - Function call result array access, e.g.:
11. Windows support      foo()[0]
===================      $foo->bar()[0]
   
- The minimum Windows version is now Windows 2000. (Windows 98, ME and NT4 are  - Callable typehint indicating argument must be callable:
  no longer supported).      function foo(callable $do) {
       }
       foo("strcmp");
       foo(function() {});
       $o = new ArrayObject();
       foo(array($o, "count"));
   
- PHP Windows binaries target i586 or later. i386 and i486 are not supported.  - Short array syntax:
       $a = [1, 2, 3, 4];
       $a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4];
       $a = ['one' => 1, 2, 'three' => 3, 4];
   
- Support for the IIS SAPI has been dropped. Use the FastCGI SAPI instead   - Binary number format:
  (available for IIS5 and later)). FastCGI is the recommended way to use PHP      0b00100 0b010101
  with IIS (see http://php.iis.net/). 
   
- A new build is available based on the latest Visual C++ Compiler (VC9).   - Chained string array offsets now work.
  Its use is recommended with FastCGI or CLI. Apache's Windows binaries are not      $a = "abc";
  compatible with VC9; however, you can use Apache Lounge's build      echo $a[0][0];
  (http://apachelounge.com). 
   
- The x64 binaries are for experimental usage only. They are not meant to be   - Anonymous functions now support using $this and class scope.
  used in production.    Anonymous function can be declared as "static" to ignore the scope.
   
- A new site is available to download Windows releases as well as Windows-only  - Class::{expr}() syntax is now supported:
  releases: http://windows.php.net. Windows-specific releases will be made to      class A {
  fix security issues in the bundled libraries (libpng, openssl, etc.). Please          static function foo() {
  note that this site does not replace the main PHP site as a source of PHP              echo "Hello world!\n";
  news, resources, or documentation.          }
       }
       $x = "f";
       $y = "o";
       A::{$x.$y.$y}();
   
- Windows support has been added for the following functions: getopt(),  - Class member access on instantiation:
  imagecolorclosesthwb(), mcrypt_create_iv(), inet_ntop(), inet_pton(),       (new foo)->method()
  getmxrr(), checkdnsrr(), dns_get_record(), linkinfo(), readlink(),       (new foo)->property
  symlink(), link(), fnmatch(), stream_socket_pair(), time_nanosleep(),       (new foo)[0]
  time_sleep_until(), and socket_create_pair(). 
   
 - Crypt supports now all available algorithms on Windows (blowfish included).  
   
- Improved portability of stat(), touch(), filemtime(), filesize() and relatedc. New functions
  functions (100% portable for the available data). 
   
- It is now possible to create hard links on Windows using the link() function,  - Core:
  and symbolic links using the symlink() function. Hard links are available    - get_declared_traits()
  as of Windows 2000 and symbolic links as of Windows Vista.    - getimagesizefromstring()
     - hex2bin()
     - header_register_callback()
     - http_response_code()
     - stream_set_chunk_size()
     - socket_import_stream()
     - trait_exists()
   
- The PDO_OCI php_pdo_oci8.dll library (for use with Oracle version 8 client  - Intl:
  libraries) is no longer being built. Instead, use php_pdo_oci.dll (note no    - transliterator_create()
  '8') with Oracle 10 or 11 client libraries. Connection to other database    - transliterator_create_from_rules()
  versions is still supported.    - transliterator_create_inverse()
     - transliterator_get_error_code()
     - transliterator_get_error_message()
     - transliterator_list_ids()
     - transliterator_transliterate()
   
- For the OCI8 extension, a new library php_oci8_11g.dll is available in  - LDAP:
  addition to php_oci8.dll. Only one can be enabled at any time. Use    - ldap_control_paged_result()
  php_oci8.dll with Oracle 10.2 client libraries. Use php_oci8_11g.dll with    - ldap_control_paged_result_response()
  Oracle 11 client libraries. Connection to other database versions is still 
  supported. 
   
- Firebird and SNMP support are no longer available on Windows. Firebird support  - libxml:
  may be reintroduced in the future.    - libxml_set_external_entity_loader()
   
=====================  - mysqli:
11.1 New in PHP 5.3.4    - mysqli_error_list()
=====================    - mysqli_stmt_error_list()
   
- open_basedir supports now symbolic links (checks the target).  - Session:
- is_link and SplFileInfo symbolic links related method are now fully supported    - session_register_shutdown()
  (on Windows Vista or later).    - session_status()
   
===================  - SPL
12. New in PHP 5.3:    - class_uses()
=================== 
   
     a. New librariesd. New global constants
   
       - mysqlnd is a new core library shipped with PHP. It is a PHP-specific  - CURLOPT_MAX_RECV_SPEED_LARGE
         replacement for libmysql and is recommended for all installations for  - CURLOPT_MAX_SEND_SPEED_LARGE
         increased performance.  - ENT_DISALLOWED
   - ENT_HTML401
   - ENT_HTML5
   - ENT_SUBSTITUTE
   - ENT_XHTML
   - ENT_XML1
   - IPPROTO_IP
   - IPPROTO_IPV6
   - IPV6_MULTICAST_HOPS
   - IPV6_MULTICAST_IF
   - IPV6_MULTICAST_LOOP
   - IP_MULTICAST_IF
   - IP_MULTICAST_LOOP
   - IP_MULTICAST_TTL
   - JSON_BIGINT_AS_STRING
   - JSON_OBJECT_AS_ARRAY
   - JSON_PRETTY_PRINT
   - JSON_UNESCAPED_SLASHES
   - JSON_UNESCAPED_UNICODE
   - LIBXML_HTML_NODEFDTD
   - LIBXML_HTML_NOIMPLIED
   - LIBXML_PEDANTIC
   - MCAST_JOIN_GROUP
   - MCAST_LEAVE_GROUP
   - MCAST_BLOCK_SOURCE
   - MCAST_UNBLOCK_SOURCE
   - MCAST_JOIN_SOURCE_GROUP
   - MCAST_LEAVE_SOURCE_GROUP
   - OPENSSL_CIPHER_AES_128_CBC
   - OPENSSL_CIPHER_AES_192_CBC
   - OPENSSL_CIPHER_AES_256_CBC
   - OPENSSL_RAW_DATA
   - OPENSSL_ZERO_PADDING
   - PHP_OUTPUT_HANDLER_CLEAN
   - PHP_OUTPUT_HANDLER_CLEANABLE
   - PHP_OUTPUT_HANDLER_DISABLED
   - PHP_OUTPUT_HANDLER_FINAL
   - PHP_OUTPUT_HANDLER_FLUSH
   - PHP_OUTPUT_HANDLER_FLUSHABLE
   - PHP_OUTPUT_HANDLER_REMOVABLE
   - PHP_OUTPUT_HANDLER_STARTED
   - PHP_OUTPUT_HANDLER_STDFLAGS
   - PHP_OUTPUT_HANDLER_WRITE
   - PHP_QUERY_RFC1738
   - PHP_QUERY_RFC3986
   - PHP_SESSION_ACTIVE
   - PHP_SESSION_DISABLED
   - PHP_SESSION_NONE
   - SCANDIR_SORT_ASCENDING
   - SCANDIR_SORT_DESCENDING
   - SCANDIR_SORT_NONE
   - SORT_FLAG_CASE
   - SORT_NATURAL
   - STREAM_META_ACCESS
   - STREAM_META_GROUP
   - STREAM_META_GROUP_NAME
   - STREAM_META_OWNER
   - STREAM_META_OWNER_NAME
   - STREAM_META_TOUCH
   - T_CALLABLE
   - T_INSTEADOF
   - T_TRAIT
   - T_TRAIT_C
   - ZLIB_ENCODING_DEFLATE
   - ZLIB_ENCODING_GZIP
   - ZLIB_ENCODING_RAW
   - U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR
   - IDNA_CHECK_BIDI
   - IDNA_CHECK_CONTEXTJ
   - IDNA_NONTRANSITIONAL_TO_ASCII
   - IDNA_NONTRANSITIONAL_TO_UNICODE
   - INTL_IDNA_VARIANT_2003
   - INTL_IDNA_VARIANT_UTS46
   - IDNA_ERROR_EMPTY_LABEL
   - IDNA_ERROR_LABEL_TOO_LONG
   - IDNA_ERROR_DOMAIN_NAME_TOO_LONG
   - IDNA_ERROR_LEADING_HYPHEN
   - IDNA_ERROR_TRAILING_HYPHEN
   - IDNA_ERROR_HYPHEN_3_4
   - IDNA_ERROR_LEADING_COMBINING_MARK
   - IDNA_ERROR_DISALLOWED
   - IDNA_ERROR_PUNYCODE
   - IDNA_ERROR_LABEL_HAS_DOT
   - IDNA_ERROR_INVALID_ACE_LABEL
   - IDNA_ERROR_BIDI
   - IDNA_ERROR_CONTEXTJ
   
     b. New extensionse. New classes
   
       - enchant  - Reflection:
       - fileinfo (replaces mime_magic)    - ReflectionZendExtension
       - intl 
       - Phar 
       - SQLite3 
   
     c. New stream wrappers  - Intl:
     - Transliterator
     - Spoofchecker
   
       - glob:// stream wrapper  - JSON:
       - phar:// stream wrapper for accessing phar archives    - JsonSerializable
   
     d. New stream filters  - Session:
     - SessionHandler
   
       - "dechunk" (HTTP/1.1 chunked transfer encoding)  - SNMP:
       - The bz2.decompress filter now supports concatenation    - SNMP
   
     e. New functions  - SPL:
     - CallbackFilterIterator
     - RecursiveCallbackFilterIterator
   
       - Core:    gc_collect_cycles()f. New methods
                  gc_enabled() 
                  gc_enable() 
                  gc_disable() 
                  class_alias() 
                  get_called_class() 
                  forward_static_call() 
                  forward_static_call_array() 
                  str_getcsv() 
                  quoted_printable_encode() 
                  lcfirst() 
       - Array:   array_replace() 
                  array_replace_recursive() 
       - Date:    date_add() 
                  date_sub() 
                  date_diff() 
                  date_parse_from_format() 
                  date_create_from_format() 
                  date_get_last_errors() 
                  timezone_version_get() 
       - INI:     parse_ini_string() 
       - GMP:     gmp_testbit() 
       - Hash:    hash_copy() 
       - IMAP:    imap_gc() 
                  imap_utf8_to_mutf7() 
                  imap_mutf7_to_utf8() 
       - JSON:    json_last_error() 
       - libxml:  libxml_disable_entity_loader 
       - MySQLi:  mysqli_fetch_all() 
                  mysqli_get_connection_stats() 
                  mysqli_poll() 
                  mysqli_reap_async_query() 
       - Network: gethostname() 
                  header_remove() 
       - OpenSSL: openssl_random_pseudo_bytes() 
       - PCNTL:   pcntl_signal_dispatch() 
                  pcntl_sigprocmask() 
                  pcntl_sigwaitinfo() 
                  pcntl_sigtimedwait() 
       - PCRE:    preg_filter() 
       - SHM:     msg_queue_exists() 
                  shm_has_var() 
       - Streams: stream_supports_lock() 
                  stream_context_set_default() 
                  stream_context_get_params() 
       - Userspace stream wrappers: 
                  stream_cast() 
                  stream_set_options() 
   
     f. New global constants  - Closure:
     - Closure::bind()
     - Closure::bindTo()
   
       - Core:    E_DEPRECATED  - Reflection:
                  E_USER_DEPRECATED    - ReflectionClass::getTraitAliases()
                  __DIR__    - ReflectionClass::getTraitNames()
                  __NAMESPACE__    - ReflectionClass::getTraits()
                  PHP_MAXPATHLEN    - ReflectionClass::isCloneable()
                  PHP_WINDOWS_VERSION_MAJOR    - ReflectionClass::isTrait()
                  PHP_WINDOWS_VERSION_MINOR    - ReflectionClass::newInstanceWithoutConstructor()
                  PHP_WINDOWS_VERSION_BUILD    - ReflectionExtension::isPersistent()
                  PHP_WINDOWS_VERSION_PLATFORM    - ReflectionExtension::isTemporary()
                  PHP_WINDOWS_VERSION_SP_MAJOR    - ReflectionFunction::getClosure()
                  PHP_WINDOWS_VERSION_SP_MINOR    - ReflectionFunction::getClosureScopeClass()
                  PHP_WINDOWS_VERSION_SUITEMASK    - ReflectionFunction::getClosureThis()
                  PHP_WINDOWS_VERSION_PRODUCTTYPE    - ReflectionFunctionAbstract::getClosureScopeClass()
                  PHP_WINDOWS_NT_DOMAIN_CONTROLLER    - ReflectionFunctionAbstract::getClosureThis()
                  PHP_WINDOWS_NT_SERVER    - ReflectionMethod::getClosure()
                  PHP_WINDOWS_NT_WORKSTATION    - ReflectionMethod::getClosureScopeClass()
       - INI:     INI_SCANNER_NORMAL    - ReflectionMethod::getClosureThis()
                  INI_SCANNER_RAW    - ReflectionObject::getTraitAliases()
       - cURL     CURLOPT_PROGRESSFUNCTION    - ReflectionObject::getTraitNames()
       - GD:      IMG_FILTER_PIXELATE    - ReflectionObject::getTraits()
       - JSON:    JSON_ERROR_NONE    - ReflectionObject::isCloneable()
                  JSON_ERROR_DEPTH    - ReflectionObject::isTrait()
                  JSON_ERROR_STATE_MISMATCH    - ReflectionObject::newInstanceWithoutConstructor()
                  JSON_ERROR_CTRL_CHAR    - ReflectionParameter::canBePassedByValue()
                  JSON_ERROR_SYNTAX    - ReflectionParameter::isCallable()
                  JSON_FORCE_OBJECT 
                  JSON_HEX_TAG 
                  JSON_HEX_AMP 
                  JSON_HEX_APOS 
                  JSON_HEX_QUOT 
       - LDAP:    LDAP_OPT_NETWORK_TIMEOUT 
       - libxml:  LIBXML_LOADED_VERSION  
       - PCRE:    PREG_BAD_UTF8_OFFSET_ERROR 
       - PCNTL:   SIG_BLOCK 
                  SIG_UNBLOCK 
                  SIG_SETMASK 
                  SI_USER 
                  SI_NOINFO 
                  SI_KERNEL 
                  SI_QUEUE 
                  SI_TIMER 
                  SI_MESGQ 
                  SI_ASYNCIO 
                  SI_SIGIO 
                  SI_TKILL 
                  CLD_EXITED 
                  CLD_KILLED 
                  CLD_DUMPED 
                  CLD_TRAPPED 
                  CLD_STOPPED 
                  CLD_CONTINUED 
                  TRAP_BRKPT 
                  TRAP_TRACE 
                  POLL_IN 
                  POLL_OUT 
                  POLL_MSG 
                  POLL_ERR 
                  POLL_PRI 
                  POLL_HUP 
                  ILL_ILLOPC 
                  ILL_ILLOPN 
                  ILL_ILLADR 
                  ILL_ILLTRP 
                  ILL_PRVOPC 
                  ILL_PRVREG 
                  ILL_COPROC 
                  ILL_BADSTK 
                  FPE_INTDIV 
                  FPE_INTOVF 
                  FPE_FLTDIV 
                  FPE_FLTOVF 
                  FPE_FLTUND 
                  FPE_FLTRES 
                  FPE_FLTINV 
                  FPE_FLTSUB 
                  SEGV_MAPERR 
                  SEGV_ACCERR 
                  BUS_ADRALN 
                  BUS_ADRERR 
                  BUS_OBJERR 
   
     g. New classes  - PDO_DBLIB:
     - PDO::newRowset()
   
       - Date:    DateInterval  - SPL:
                  DatePeriod    - DirectoryIterator::getExtension()
       - Phar:    Phar    - RegexIterator::getRegex()
                  PharData    - SplDoublyLinkedList::serialize()
                  PharFileInfo    - SplDoublyLinkedList::unserialize()
                  PharException    - SplFileInfo::getExtension()
       - SPL      SplDoublyLinkedList    - SplFileObject::fputcsv()
                  SplStack    - SplObjectStorage::getHash()
                  SplQueue    - SplQueue::serialize
                  SplHeap    - SplQueue::unserialize
                  SplMinHeap    - SplStack::serialize
                  SplMaxHeap    - SplStack::unserialize
                  SplPriorityQueue    - SplTempFileObject::fputcsv
                  SplFixedArray 
                  FilesystemIterator 
                  GlobIterator 
                  RecursiveTreeIterator 
                  MultipleIterator 
   
     h. New methods  - XSLT:
     - XsltProcessor::setSecurityPrefs()
     - XsltProcessor::getSecurityPrefs()
   
       - Date:         DateTime::diff()  - Zlib:
                       DateTime::add()    - zlib_decode()
                       DateTime::sub()    - zlib_encode()
                       DateTime::createFromFormat() 
                       DateTime::getLastErrors() 
       - DOM:          DOMNode::getLineNo() 
       - Exception:    Exception::getPrevious() 
       - PDO_Firebird: PDO::setAttribute() 
       - Reflection:   ReflectionProperty::setAccessible() 
                       ReflectionFunction::inNamespace() 
                       ReflectionFunction::getNamespaceName() 
                       ReflectionFunction::getShortName() 
                       ReflectionClass::inNamespace() 
                       ReflectionClass::getNamespaceName() 
                       ReflectionClass::getShortName() 
       - SPL:          DirectoryIterator::getExtension() 
                       SplFileInfo::getExtension() 
                       SplObjectStorage::addAll() 
                       SplObjectStorage::removeAll() 
       - XSL:          XSLTProcessor::setProfiling() 
   
     i. New class constantsg. New Hash algorithms
   
       - PDO_Firebird: PDO::FB_ATTR_DATE_FORMAT  - fnv132
                       PDO::FB_ATTR_TIME_FORMAT  - fnv164
                       PDO::FB_ATTR_TIMESTAMP_FORMAT  - joaat

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>