doc:todo:migrationguide

This is an old revision of the document!


Migration guide TODO

Version: PHP 7.2.0

Undocumented new functionality

  • Undocumented new behavior/new features
    • Libsodium
    • Argon2 support for password_* functions
    • Extension load by name on the dl() function page and ini.core#extension list
    • Abstract method overriding in OOP changelog/abstraction page
    • number_format() no longer returns -0
    • E_WARNING on count() for invalid countable types
    • resource > object in hash function documentation
    • JSON_OBJECT_AS_ARRAY on json_decode() function page, note+changelog
    • rand() and mt_rand() x64 modulo change note
    • $php_errormsg and track_error behavior in local scope
    • realpath_cache_size default size change 16kb > 4mb
  • Constants
    • PASSWORD_ARGON2I
    • PASSWORD_ARGON2_DEFAULT_MEMORY_COST
    • PASSWORD_ARGON2_DEFAULT_TIME_COST
    • PASSWORD_ARGON2_DEFAULT_THREADS
    • LDAP_EXOP_START_TLS
    • LDAP_EXOP_MODIFY_PASSWD
    • LDAP_EXOP_REFRESH
    • LDAP_EXOP_WHO_AM_I
    • LDAP_EXOP_TURN
    • PREG_UNMATCHED_AS_NULL
    • JSON_INVALID_UTF8_IGNORE
    • JSON_INVALID_UTF8_SUBSTITUTE
    • SODIUM_LIBRARY_VERSION
    • SODIUM_LIBRARY_MAJOR_VERSION
    • SODIUM_LIBRARY_MINOR_VERSION
    • SODIUM_CRYPTO_AEAD_AES256GCM_KEYBYTES
    • SODIUM_CRYPTO_AEAD_AES256GCM_NSECBYTES
    • SODIUM_CRYPTO_AEAD_AES256GCM_NPUBBYTES
    • SODIUM_CRYPTO_AEAD_AES256GCM_ABYTES
    • SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES
    • SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES
    • SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES
    • SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_ABYTES
    • SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES
    • SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES
    • SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES
    • SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES
    • SODIUM_CRYPTO_AUTH_BYTES
    • SODIUM_CRYPTO_AUTH_KEYBYTES
    • SODIUM_CRYPTO_BOX_SEALBYTES
    • SODIUM_CRYPTO_BOX_SECRETKEYBYTES
    • SODIUM_CRYPTO_BOX_PUBLICKEYBYTES
    • SODIUM_CRYPTO_BOX_KEYPAIRBYTES
    • SODIUM_CRYPTO_BOX_MACBYTES
    • SODIUM_CRYPTO_BOX_NONCEBYTES
    • SODIUM_CRYPTO_BOX_SEEDBYTES
    • SODIUM_CRYPTO_KDF_BYTES_MIN
    • SODIUM_CRYPTO_KDF_BYTES_MAX
    • SODIUM_CRYPTO_KDF_CONTEXTBYTES
    • SODIUM_CRYPTO_KDF_KEYBYTES
    • SODIUM_CRYPTO_KX_SEEDBYTES
    • SODIUM_CRYPTO_KX_SESSIONKEYBYTES
    • SODIUM_CRYPTO_KX_PUBLICKEYBYTES
    • SODIUM_CRYPTO_KX_SECRETKEYBYTES
    • SODIUM_CRYPTO_KX_KEYPAIRBYTES
    • SODIUM_CRYPTO_GENERICHASH_BYTES
    • SODIUM_CRYPTO_GENERICHASH_BYTES_MIN
    • SODIUM_CRYPTO_GENERICHASH_BYTES_MAX
    • SODIUM_CRYPTO_GENERICHASH_KEYBYTES
    • SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MIN
    • SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MAX
    • SODIUM_CRYPTO_PWHASH_ALG_ARGON2I13
    • SODIUM_CRYPTO_PWHASH_ALG_DEFAULT
    • SODIUM_CRYPTO_PWHASH_SALTBYTES
    • SODIUM_CRYPTO_PWHASH_STRPREFIX
    • SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE
    • SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
    • SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE
    • SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE
    • SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE
    • SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE
    • SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES
    • SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX
    • SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE
    • SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE
    • SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE
    • SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE
    • SODIUM_CRYPTO_SCALARMULT_BYTES
    • SODIUM_CRYPTO_SCALARMULT_SCALARBYTES
    • SODIUM_CRYPTO_SHORTHASH_BYTES
    • SODIUM_CRYPTO_SHORTHASH_KEYBYTES
    • SODIUM_CRYPTO_SECRETBOX_KEYBYTES
    • SODIUM_CRYPTO_SECRETBOX_MACBYTES
    • SODIUM_CRYPTO_SECRETBOX_NONCEBYTES
    • SODIUM_CRYPTO_SIGN_BYTES
    • SODIUM_CRYPTO_SIGN_SEEDBYTES
    • SODIUM_CRYPTO_SIGN_PUBLICKEYBYTES
    • SODIUM_CRYPTO_SIGN_SECRETKEYBYTES
    • SODIUM_CRYPTO_SIGN_KEYPAIRBYTES
    • SODIUM_CRYPTO_STREAM_NONCEBYTES
    • SODIUM_CRYPTO_STREAM_KEYBYTES
  • Functions/Methods
    • ldap_parse_exop()
    • ldap_exop()
    • ldap_exop_passwd()
    • ldap_exop_whoami()
    • socket_addrinfo_lookup()
    • socket_addrinfo_connect()
    • socket_addrinfo_bind()
    • socket_addrinfo_explain()
    • stream_isatty()
    • sapi_windows_vt100_support()
    • spl_object_id()
    • DomNodeList::count()
    • DomNamedNodeMap::count()
    • ftp_append()
    • mb_chr()
    • mb_ord()
    • mb_scrub()
    • sodium_add()
    • sodium_bin2hex()
    • sodium_compare()
    • sodium_crypto_aead_aes256gcm_decrypt()
    • sodium_crypto_aead_aes256gcm_encrypt()
    • sodium_crypto_aead_aes256gcm_is_available()
    • sodium_crypto_aead_aes256gcm_keygen()
    • sodium_crypto_aead_chacha20poly1305_decrypt()
    • sodium_crypto_aead_chacha20poly1305_encrypt()
    • sodium_crypto_aead_chacha20poly1305_ietf_decrypt()
    • sodium_crypto_aead_chacha20poly1305_ietf_encrypt()
    • sodium_crypto_aead_chacha20poly1305_ietf_keygen()
    • sodium_crypto_aead_chacha20poly1305_keygen()
    • sodium_crypto_auth_keygen()
    • sodium_crypto_auth_verify()
    • sodium_crypto_auth()
    • sodium_crypto_box_keypair_from_secretkey_and_publickey()
    • sodium_crypto_box_keypair()
    • sodium_crypto_box_open()
    • sodium_crypto_box_publickey_from_secretkey()
    • sodium_crypto_box_publickey()
    • sodium_crypto_box_seal_open()
    • sodium_crypto_box_seal()
    • sodium_crypto_box_secretkey()
    • sodium_crypto_box_seed_keypair()
    • sodium_crypto_box()
    • sodium_crypto_generichash_final()
    • sodium_crypto_generichash_init()
    • sodium_crypto_generichash_keygen()
    • sodium_crypto_generichash_update()
    • sodium_crypto_generichash()
    • sodium_crypto_kdf_derive_from_key()
    • sodium_crypto_kdf_keygen()
    • sodium_crypto_kx_client_session_keys()
    • sodium_crypto_kx_keypair()
    • sodium_crypto_kx_publickey()
    • sodium_crypto_kx_secretkey()
    • sodium_crypto_kx_seed_keypair()
    • sodium_crypto_kx_server_session_keys()
    • sodium_crypto_pwhash_scryptsalsa208sha256_str_verify()
    • sodium_crypto_pwhash_scryptsalsa208sha256_str()
    • sodium_crypto_pwhash_scryptsalsa208sha256()
    • sodium_crypto_pwhash_str_verify()
    • sodium_crypto_pwhash_str()
    • sodium_crypto_pwhash()
    • sodium_crypto_scalarmult_base()
    • sodium_crypto_scalarmult()
    • sodium_crypto_secretbox_keygen()
    • sodium_crypto_secretbox_open()
    • sodium_crypto_secretbox()
    • sodium_crypto_shorthash_keygen()
    • sodium_crypto_shorthash()
    • sodium_crypto_sign_detached()
    • sodium_crypto_sign_ed25519_pk_to_curve25519()
    • sodium_crypto_sign_ed25519_sk_to_curve25519()
    • sodium_crypto_sign_keypair_from_secretkey_and_publickey()
    • sodium_crypto_sign_keypair()
    • sodium_crypto_sign_open()
    • sodium_crypto_sign_publickey_from_secretkey()
    • sodium_crypto_sign_publickey()
    • sodium_crypto_sign_secretkey()
    • sodium_crypto_sign_seed_keypair()
    • sodium_crypto_sign_verify_detached()
    • sodium_crypto_sign()
    • sodium_crypto_stream_keygen()
    • sodium_crypto_stream_xor()
    • sodium_crypto_stream()
    • sodium_hex2bin()
    • sodium_increment()
    • sodium_memcmp()
    • sodium_memzero()
    • sodium_pad()
    • sodium_unpad()

Incompatibilities

  • Session
    • Removed register_globals related code and “!” can be used as $_SESSION key name.
    • Session is made to manage session status correctly and prevents invalid operations. Only inappropriate codes are affected by this change. If you have problems with this, it means you have problem in your code.
      • Functions are made to set or return correct session status: session_start(), session_status(), session_regenerate_id().
      • Functions are made to return bool from null. These functions have void parameter and void parameter is checked: session_unset(), session_write_close()/session_commit(), session_abort(), session_reset().
      • Functions prohibit invalid operations with regard to session status and HTTP header status, returns correct bool return value: session_start(), session_set_cookie_params(), session_name(), session_module_name(), session_set_save_handler(), session_regenerate_id(), session_cache_limiter(), session_cache_expire(), session_unset(), session_destroy(), session_write_close()/session_commit(), session_reset().
      • INI value change by ini_set() returns update status correctly. Invalid INI modifications are checked and made to fail: session.name, session.save_path, session.cookie_lifetime, session.cookie_path, session.cookie_domain, session.cookie_httponly, session.cookie_secure, session.use_cookies, session.use_only_cookies, session.use_strict_mode, session.referer_check, session.cache_limiter, session.cache_expire, session.lazy_write, session.save_handler, session.serialize_handler, session.gc_probability, session.gc_divior, session.gc_maxlifetime.
      • Some E_ERRORs are changed to E_WARNING since session status is managed correctly: session_start().
      • Session no longer initialize $_SESSION for invalid and useless session: session_start()
      • When headers are already sent and try to set new INI values: session_name(), session_module_name(), session_save_path(), session_cache_limiter() and session_cache_expire() are no longer works. Older PHPs accepts new values even if new values will not be effective. This new corrected behavior may affect command line mode CLI scripts that manage sessions. Use output buffer just like web applications to resolve problems on CLI scripts.

New Features

  • JSON
    • Added JSON_INVALID_UTF8_IGNORE and JSON_INVALID_UTF8_SUBSTITUTE options for json_encode() and json_decode() to ignore and replace invalid UTF-8 byte sequences, respectively.
  • PCRE:
    • Added `PREG_UNMATCHED_AS_NULL` flag to allow distinguish between unmatched subpatterns and empty matches by reporting NULL and “” (empty string), respectively.
  • Standard Library
    • mail()/mb_send_mail() accept array $extra_header. Array parameter is checked against RFC 2822.

Other Changes

  • Mbstring
    • mb_check_encoding() accepts array parameter. Both key and value encodings are checked recursively.
    • mb_convert_encoding() accepts array parameter. Only value encodings are converted recursively.
  • Windows
    • Support for VT100 console mode on systems starting with Windows NT 10.0.10586 (Windows 10 (TH2)), cmd.exe supports ANSI escape sequences. The corresponding console mode is enabled by default on CLI on suitable systems. As well, the function sapi_windows_vt100_support() is provided, to control and query the corresponding information in the scripts.
doc/todo/migrationguide.1511981697.txt.gz · Last modified: 2017/11/29 18:54 by kalle