Appendices
PHP Manual

Changelog

The following changes have been made to functions of bundled extensions.

VersionFunctionDescription
5.6.0Countable::countThe optional mode parameter was added.
 cryptRaise E_NOTICE security warning if salt is omitted.
 curl_setoptCURL_SAFE_UPLOAD is now TRUE by default.
 curl_setoptRemoved CURLOPT_CLOSEPOLICY and associated values.
 hash_algosSupport for gost-crypto was added. This implements the GOST hash function using the CryptoPro S-box tables as specified by RFC 4357, section 11.2.
 html_entity_decodeThe default value for the encoding parameter was changed to be the value of the default_charset configuration option.
 htmlentitiesThe default value for the encoding parameter was changed to be the value of the default_charset configuration option.
 htmlspecialcharsThe default value for the encoding parameter was changed to be the value of the default_charset configuration option.
 json_decodeInvalid non-lowercased variants of the true, false and null literals are no longer accepted as valid input, and will generate warnings.
 mb_regex_encodingDefault encoding is changed to UTF-8. It was EUC-JP Previously.
 mcrypt_create_ivMCRYPT_DEV_URANDOM is now the default value of source.
 pg_connectSupport for giving the PGSQL_CONNECT_ASYNC constant as the connect_type was added.
 pg_convertNo longer experimental. Boolean/NULL data types are supported. Unknown/unsupported data types are escaped without validation. pg_convert could be used with any data types.
 pg_deleteNo longer experimental. Added PGSQL_DML_ESCAPE constant, TRUE/FALSE and NULL data type support.
 pg_insertNo longer experimental. Added PGSQL_DML_ESCAPE constant, TRUE/FALSE and NULL data type support.
 pg_lo_seekAdded PostgreSQL 9.3's 64bit large object support. Both client and server must support PostgreSQL 9.3 and PHP must be 64bit build to use 64bit large object.
 pg_lo_tellAdded PostgreSQL 9.3's 64bit large object support. Both client and server must support PostgreSQL 9.3 and PHP must be 64bit build to use 64bit large object.
 pg_lo_truncateAdded truncate function. It supports PostgreSQL 9.3's 64bit large object. Both client and server must support PostgreSQL 9.3 and PHP must be 64bit build to use 64bit large object.
 pg_meta_dataNo longer experimental. Added "is enum" as default attribute. extended flag is added.
 pg_selectNo longer experimental. Added PGSQL_DML_ESCAPE constant, TRUE/FALSE and NULL data type support.
 pg_updateNo longer experimental. Added PGSQL_DML_ESCAPE constant, TRUE/FALSE and NULL data type support.
 stream_socket_enable_cryptoThe crypto_type is now optional.
 substr_comparelength may now be 0.
 unserializeManipulating the serialised data by replacing C: with O: to force object instantiation without calling the constructor will now fail.
 ReflectionClass::newInstanceWithoutConstructorAll internal classes can now be instantiated except for those declared final.
 XMLReader::getAttributeNoXMLReader::getAttributeNo now returns NULL if the attribute doesn't exist.
 XMLReader::getAttributeNsXMLReader::getAttributeNS now returns NULL if the attribute doesn't exist.
5.5.7apache_request_headersThis function became available in the CLI server.
 apache_response_headersThis function became available in the CLI server.
 getallheadersThis function became available in the CLI server.
5.5.3/5.4.19pg_deleteDirect SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
 pg_insertDirect SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
 pg_selectDirect SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
 pg_updateDirect SQL injection to table_name and Indirect SQL injection to identifiers are fixed.
5.5.2DOMDocument::schemaValidateAdded the flags parameter
 DOMDocument::schemaValidateSourceAdded the flags parameter
5.5.1hex2binA warning is thrown if the input string is invalid hexadecimal string.
 pg_unescape_byteaA warning is thrown if the input string is invalid.
 session_set_save_handlerAdded the optional create_sid parameter.
5.5.0/PECL 3.0.0IntlDateFormatter::createAn IntlCalendar object is allowed for calendar. Objects of type IntlTimeZone and DateTimeZone are allowed for timezone. Invalid timezone identifiers (including empty strings) are no longer allowed for timezone. If NULL is given for timezone, the timezone identifier given by date_default_timezone_get will be used instead of ICUʼs default.
 IntlDateFormatter::formatSupport for providing IntlCalendar objects to the value parameter was added.
 IntlDateFormatter::setCalendarIt became possible to pass an IntlCalendar object.
5.5.0curl_setoptAdded the cURL resource as the first argument to the CURLOPT_PROGRESSFUNCTION callback.
 curl_setoptIntroduced CURLOPT_SHARE.
 emptyempty now supports expressions, rather than only variables.
 gd_infoWebP Support added.
 imagerotateThis function is now affected by the interpolation method set by the imagesetinterpolation function.
 iterator_to_arrayiterator_to_array gained support for key types other than integer and string when the use_keys parameter is enabled.
 json_encodedepth parameter was added.
 mysql_connectThis function will generate an E_DEPRECATED error.
 mysql_db_nameThe mysql_list_dbs function is deprecated, and emits an E_DEPRECATED level error.
 mysql_pconnectThis function will generate an E_DEPRECATED error.
 mysql_tablenameThe mysql_tablename function is deprecated, and emits an E_DEPRECATED level error.
 packThe "Z" code was added with equivalent functionality to "a" for Perl compatibility.
 php_logo_guidphp_logo_guid has been removed from PHP.
 phpinfoLogo GUIDs were replaced with data URIs, and so turning off expose_php now has no effect on the result of phpinfo(). Credits are also now embedded within the output itself instead of linked.
 preg_replaceThe /e modifier is deprecated. Use preg_replace_callback instead. See the PREG_REPLACE_EVAL documentation for additional information about security risks.
 set_error_handlererror_handler now accepts NULL.
 set_exception_handlerPreviously, if NULL was passed then this function returned TRUE. It returns the previous handler since PHP 5.5.0.
 setcookieA Max-Age attribute is now included in the Set-Cookie header sent to the client.
 setrawcookieA Max-Age attribute is now included in the Set-Cookie header sent to the client.
 unpackChanges were made to bring this function into line with Perl: The "a" code now retains trailing NULL bytes. The "A" code now strips all trailing ASCII whitespace (spaces, tabs, newlines, carriage returns, and NULL bytes). The "Z" code was added for NULL-padded strings, and removes trailing NULL bytes.
 zend_logo_guidzend_logo_guid has been removed from PHP.
 mysqli::commitAdded flags and name parameters.
 mysqli::optionsThe MYSQLI_SERVER_PUBLIC_KEY option was added.
 mysqli::rollbackAdded flags and name parameters.
 SoapClient::SoapClientNew ssl_method option.
5.4.8assertThe description parameter was added. The description is also now provided to a callback function in ASSERT_CALLBACK mode as the fourth argument.
5.4.7parse_urlFixed host recognition when scheme is omitted and a leading component separator is present.
5.4.1hex2binA warning is thrown if the input string is of odd length. In PHP 5.4.0 the string was silently accepted, but the last byte was truncated.
5.4.0/PECL 2.0.0b1idn_to_asciiAdded the parameters variant and idna_info; UTS #46 support.
 idn_to_utf8Added the parameters variant and idna_info; UTS #46 support.
5.4.0DOMDocument::loadHTMLAdded options parameter.
 DOMDocument::loadHTMLFileAdded options parameter.
 apache_child_terminateThis function became available under FastCGI. Previously, it was supported only when PHP was installed as an Apache module.
 apache_request_headersThis function became available under FastCGI. Previously, it was supported only when PHP was installed as an Apache module.
 apache_response_headersThis function became available under FastCGI. Previously, it was supported only when PHP was installed as an Apache module.
 array_combinePrevious versions issued E_WARNING and returned FALSE for empty arrays.
 array_multisortThe SORT_NATURAL and SORT_FLAG_CASE were added to array1_sort_flags as possible sort flags.
 date_default_timezone_getThe TZ environment variable is no longer used to guess the timezone.
 date_default_timezone_getThe timezone is no longer guessed from information available through the operating system as the guessed timezone can not be relied on.
 debug_backtraceAdded the optional parameter limit.
 debug_print_backtraceAdded the optional parameter limit.
 define_syslog_variablesThis function was removed from PHP.
 dns_get_recordAdded raw parameter.
 emptyChecking non-numeric offsets of strings returns TRUE.
 error_reportingE_STRICT became part of E_ALL.
 filter_input_arrayAdded add_empty parameter.
 filter_var_arrayAdded add_empty parameter.
 get_html_translation_tableThe constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
 get_html_translation_tableThe default value for the encoding parameter was changed to UTF-8.
 get_magic_quotes_gpcAlways returns FALSE because the magic quotes feature was removed from PHP.
 get_magic_quotes_runtimeAlways returns FALSE because the magic quotes feature was removed from PHP.
 getallheadersThis function became available under FastCGI. Previously, it was supported only when PHP was installed as an Apache module.
 gzcompressAdded encoding parameter.
 gzdeflateAdded encoding parameter.
 gzencodeFORCE_DEFLATE now generates RFC 1950 compliant output.
 hashThe tiger algorithm now uses big-endian byte ordering.
 hash_algosSupport for joaat, fnv132 and fnv164 was added. Support for Salsa10 and Salsa20 was removed.
 html_entity_decodeThe constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
 html_entity_decodeDefault encoding changed from ISO-8859-1 to UTF-8.
 htmlentitiesThe constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
 htmlentitiesThe default value for the encoding parameter was changed to UTF-8.
 htmlspecialcharsThe constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
 htmlspecialcharsThe default value for the encoding parameter was changed to UTF-8.
 htmlspecialchars_decodeThe constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
 http_build_queryThe enc_type parameter was added.
 imagecolorsetThe alpha parameter was added.
 issetChecking non-numeric offsets of strings now returns FALSE.
 json_decodeThe options parameter was added.
 json_encodeJSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, and JSON_UNESCAPED_UNICODE options were added.
 mb_encode_numericentityAdded is_hex parameter.
 number_formatThis function now supports multiple bytes in dec_point and thousands_sep. Only the first byte of each separator was used in older versions.
 ob_startA chunk size of 1 now results in chunks of 1 byte being sent to the output buffer.
 ob_startThe third parameter of ob_start changed from a boolean parameter called erase (which, if set to FALSE, would prevent the output buffer from being deleted until the script finished executing) to an integer parameter called flags. Unfortunately, this results in an API compatibility break for code written prior to PHP 5.4.0 that uses the third parameter. See the flags example for an example of how to handle this with code that needs to be compatible with both.
 openssl_decryptThe raw_output was changed to options.
 openssl_encryptThe raw_output was changed to options.
 preg_match_allThe matches parameter became optional.
 scandirsorting_order constants were added. Any nonzero value caused descending order in previous versions. So for all PHP versions, use 0 for ascending order, and 1 for descending order. An option for SCANDIR_SORT_NONE behavior did not exist prior to PHP 5.4.0.
 session_set_save_handlerAdded SessionHandlerInterface for implementing session handlers and SessionHandler to expose internal PHP session handlers.
 snmp_set_valueretrievalConstants SNMP_VALUE_PLAIN or SNMP_VALUE_LIBRARY may be combined with SNMP_VALUE_OBJECT resulting different way of representing contents of value array element in return value of GET-function. If no SNMP_VALUE_{PLAIN,LIBRARY} constant is accompanying SNMP_VALUE_OBJECT, SNMP_VALUE_LIBRARY is used. Prior to 5.4.0 SNMP_VALUE_OBJECT effecively meant SNMP_VALUE_OBJECT|SNMP_VALUE_PLAIN.
 sortAdded support for SORT_NATURAL and SORT_FLAG_CASE as sort_flags
 Phar::setStubAdded len parameter.
 PharData::setStubAdded len parameter.
 SimpleXMLElement::getDocNamespacesAdded from_root parameter.
 SoapClient::SoapClientNew keep_alive option.
5.4grapheme_substrIf length is given and positive and the argument string is shorter than the specified length, all the rest of the string according to start parameter is returned. Previously, FALSE was returned.
5.3.9is_aAdded allow_string parameter
 is_subclass_ofAdded allow_string parameter
5.3.7cryptAdded $2x$ and $2y$ Blowfish modes to deal with potential high-bit attacks.
 is_subclass_ofAdded support for class_name to work with interfaces
5.3.6DateTime::modifyAbsolute date/time statements now take effect. Previously, only relative parts were used.
 DOMDocument::saveHTMLThe node parameter was added.
 array_productThe product of an empty array is now 1, when before this function would return 0 for an empty array.
 debug_backtraceThe parameter provide_object changed to options and additional option DEBUG_BACKTRACE_IGNORE_ARGS is added.
 debug_print_backtraceAdded the optional parameter options.
 preg_matchReturns FALSE if offset is higher than subject length.
 preg_match_allReturns FALSE if offset is higher than subject length.
 PDO_MYSQL DSNPrior to version 5.3.6, charset was ignored.
5.3.4get_html_translation_tableThe encoding parameter was added.
 mt_randIssues an E_WARNING and returns FALSE if max < min.
 rawurlencodeTilde characters are no longer encoded when rawurlencode is used with EBCDIC strings.
 sleepBefore PHP 5.3.4, on Windows, sleep always returns NULL when sleep has occurred, regardless of whether the sleep was interrupted or not.
 IntlDateFormatter::formatSupport for providing DateTime objects to the value parameter was added.
 mysqli_driver::$report_modeChanging the reporting mode is now be per-request, rather than per-process.
5.3.3DOMXPath::evaluateThe registerNodeNS parameter was added.
 DOMXPath::queryThe registerNodeNS parameter was added.
 json_encodeJSON_NUMERIC_CHECK option was added.
 ldap_sasl_bindSupport on Windows was added.
 openssl_decryptThe iv parameter was added.
 openssl_encryptThe iv parameter was added.
 parse_urlRemoved the E_WARNING that was emitted when URL parsing failed.
5.3.2 (PECL OCI8 1.4)oci_set_prefetchBefore this release, rows must be >= 1.
5.3.2cryptAdded SHA-256 and SHA-512 crypt based on Ulrich Drepper's implementation.
 cryptFixed Blowfish behaviour on invalid rounds to return "failure" string ("*0" or "*1"), instead of falling back to DES.
 flockThe automatic unlocking when the file's resource handle is closed was removed. Unlocking now always has to be done manually.
 gmp_initThe base was extended from 2 to 36, to 2 to 62 and -2 to -36.
 gmp_strvalThe base was extended from 2 to 36, to 2 to 62 and -2 to -36.
 imap_appendAdded INTERNALDATE support to imap_append.
 imap_openparams added
5.3.1get_defined_constantsWindows only: Core constants are categorized under Core, previously mhash.
 ibase_queryOn success the function now returns TRUE if there were no affected rows, where it previously returned 0 (a zero followed by an empty space).
 renamerename can now rename files across drives in Windows.
5.3.0 (PECL OCI8 1.3.4)oci_set_prefetchBefore this release, prefetching was limited to the lesser of rows rows and 1024 * rows bytes. The byte size restriction has now been removed.
5.3.0DateTime::__constructIf time contains an invalid date/time format, then an exception is now thrown. Previously an error was emitted.
 DateTime::modifyChanged the return value on success from NULL to DateTime.
 DateTime::setDateChanged the return value on success from NULL to DateTime.
 DateTime::setISODateChanged the return value on success from NULL to DateTime.
 DateTime::setTimeChanged the return value on success from NULL to DateTime.
 DateTime::setTimezoneChanged the return value on success from NULL to DateTime.
 DateTimeZone::getTransitionsThe optional timestamp_begin and timestamp_end were added.
 DateTimeZone::listIdentifiersAdded the optional what and country parameters.
 DirectoryIterator::__constructThrows UnexpectedValueException if the path cannot be opened.
 acoshThis function is now available on all platforms
 array_multisortThe SORT_LOCALE_STRING was added to array1_sort_flags as possible sort flags.
 array_reduceChanged initial to allow mixed, previously integer.
 array_searchAs with all internal PHP functions as of 5.3.0, array_search returns NULL if invalid parameters are passed to it.
 asinhThis function is now available on all platforms
 atanhThis function is now available on all platforms
 call_user_funcThe interpretation of object oriented keywords like parent and self has changed. Previously, calling them using the double colon syntax would emit an E_STRICT warning because they were interpreted as static.
 call_user_func_arrayThe interpretation of object oriented keywords like parent and self has changed. Previously, calling them using the double colon syntax would emit an E_STRICT warning because they were interpreted as static.
 checkdnsrrThis function is now available on Windows platforms.
 clearstatcacheAdded optional clear_realpath_cache and filename parameters.
 copyAdded context support.
 cryptPHP now contains its own implementation for the MD5 crypt, Standard DES, Extended DES and the Blowfish algorithms and will use that if the system lacks of support for one or more of the algorithms.
 curl_setoptIntroduced CURLOPT_PROGRESSFUNCTION.
 date_default_timezone_setNow throws E_WARNING rather than E_STRICT.
 define_syslog_variablesThis function now throws an E_DEPRECATED notice.
 dldl is now disabled in some SAPIs due to stability issues. The only SAPIs that allow dl are CLI and Embed. Use the Extension Loading Directives instead.
 dns_get_recordPrior to this release, if the authns parameter was given, the addtl parameter was also required.
 dns_get_recordThis function is now available on Windows platforms.
 error_reportingE_DEPRECATED and E_USER_DEPRECATED introduced.
 exif_imagetypeAdded icon support.
 expm1This function is now available on all platforms
 fgetcsvThe escape parameter was added
 fnmatchThis function is now available on Windows platforms.
 func_get_argThis function can now be used in parameter lists.
 func_get_argIf this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns FALSE.
 func_get_argsThis function can now be used in parameter lists.
 func_get_argsIf this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns FALSE.
 func_num_argsThis function can now be used in parameter lists.
 func_num_argsIf this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns -1.
 gd_infoJPG Support attribute renamed to JPEG Support.
 get_cfg_varget_cfg_var was fixed to be able to return "array" ini options.
 get_classNULL became the default value for object, so passing NULL to object now has the same result as not passing any value.
 get_defined_constantsCore constants are categorized under Core, previously internal. On Windows, the Core Constants are categorized under mhash.
 get_object_varsThis function now returns NULL if the object isn't an object. Previously FALSE was returned.
 getimagesizeAdded icon support.
 getmxrrThis function is now available on Windows platforms.
 getoptAdded support for "=" as argument/value separator.
 getoptAdded support for optional values (specified with "::").
 getoptThis function is no longer system dependent, and now works on Windows, too.
 getoptParameter longopts is available on all systems.
 hash_algosSupport for md2, ripemd256, ripemd320, salsa10, salsa20, snefru256 and sha224 was added
 htmlentitiesThe constant ENT_IGNORE was added.
 htmlspecialcharsThe constant ENT_IGNORE was added.
 imagecolorclosesthwbThis function is now available on Windows
 imagefilterPixelation support (IMG_FILTER_PIXELATE) was added.
 inet_ntopThis function is now available on Windows platforms.
 inet_ptonThis function is now available on Windows platforms.
 ini_getPreviously, the empty string was returned if the configuration option didn't exist. now, FALSE is returned instead.
 ini_get_allAdded details.
 is_aThis function is no longer deprecated, and will therefore no longer throw E_STRICT warnings.
 json_decodeAdded the optional depth. The default recursion depth was increased from 128 to 512
 json_encodeThe options parameter was added.
 linkThis function is now available on Windows platforms (Vista, Server 2008 or greater).
 linkinfoThis function is now available on Windows platforms (Vista, Server 2008 or greater).
 log1pThis function is now available on all platforms
 mb_get_infoThe entry "http_output_conv_mimetypes" was made available.
 mcrypt_create_ivIt is no longer required to call srand first. This is now done automatically.
 mcrypt_create_ivMCRYPT_DEV_RANDOM and MCRYPT_DEV_URANDOM became available on Windows platforms.
 mktimemktime now throws E_DEPRECATED notice if the is_dst parameter is used.
 mysql_db_queryThis function now throws an E_DEPRECATED notice.
 mysql_escape_stringThis function now throws an E_DEPRECATED notice.
 nl2brAdded the optional is_xhtml parameter.
 parse_ini_fileAdded optional scanner_mode parameter. Single quotes may now be used around variable assignments. Hash marks (#) may no longer be used as comments and will throw a deprecation warning if used.
 pg_lo_createThe optional object_id was added.
 pg_lo_importThe optional object_id was added.
 preg_quoteThe - character is now quoted
 property_existsThis function checks the existence of a property independent of accessibility.
 rawurlencodeNow conforms to RFC 3986.
 readlinkThis function is now available on Windows platforms (Vista, Server 2008 or greater).
 realpathPrior to this release, if only the last path component did not exist, realpath would not fail on *BSD systems. realpath now fails in this case.
 register_tick_functionTicks are now supported on threaded web server modules.
 roundThe mode parameter was introduced.
 session_startIf a session fails to start, then FALSE is returned. Previously TRUE was returned.
 setlocaleThis function now throws an E_DEPRECATED notice if a string is passed to the category parameter instead of one of the LC_* constants.
 shm_attachThis function now returns a resource instead of an integer.
 socket_create_pairThis function is now re-enabled on Windows platforms.
 spl_autoload_registerThe prepend parameter was added.
 spl_autoload_registerNamespaces support was introduced.
 stream_context_createAdded the optional params argument.
 stream_socket_pairThis function is now available on Windows platforms.
 stristrAdded the optional parameter before_needle.
 strlenPrior versions treated arrays as the string Array, thus returning a string length of 5 and emitting an E_NOTICE level error.
 strstrAdded the optional parameter before_needle.
 strtotimePrior to PHP 5.3.0, 24:00 was not a valid format and strtotime returned FALSE.
 strtotimePrior to PHP 5.3.0, relative time formats supplied to the time argument of strtotime such as this week, previous week, last week, and next week were interpreted to mean a 7 day period relative to the current date/time, rather than a week period of Monday through Sunday.
 sybase_connectThe new parameter was added.
 symlinkThis function is now available on Windows platforms (Vista, Server 2008 or greater).
 time_nanosleepThis function is now available on Windows platforms.
 time_sleep_untilThis function is now available on Windows platforms.
 touchIt became possible to change the modification time of a directory under Windows.
 mysqli::__constructAdded the ability of persistent connections.
 mysqli::queryAdded the ability of async queries.
 ReflectionFunction::__constructname can now be a closure.
 SplObjectStorage::attachAdded the data parameter.
5.2.15mysqli_driver::$report_modeChanging the reporting mode is now be per-request, rather than per-process.
5.2.11get_defined_constantsThe categorize parameter now operates appropriately. Previously, the categorize parameter was interpreted as !is_null($categorize), making any value other than NULL force the constants to be categorized.
5.2.10array_randThe resulting array of keys is no longer shuffled.
 array_uniqueChanged the default value of sort_flags back to SORT_STRING.
 curl_setoptIntroduced CURLOPT_PROTOCOLS, and CURLOPT_REDIR_PROTOCOLS.
 ip2longPrior to this version, ip2long would sometimes return a valid number even if passed an value which was not an (IPv4) Internet Protocol dotted address.
 natsortZero padded numeric strings (e.g., '00005') now essentially ignore the 0 padding.
5.2.9array_uniqueAdded the optional sort_flags defaulting to SORT_REGULAR. Prior to 5.2.9, this function used to sort the array with SORT_STRING internally.
5.2.8XSLTProcessor::importStylesheetAccepts SimpleXMLElement again which was broken since PHP 5.2.6.
5.2.7error_logThe possible value of 4 was added to message_type.
 parse_ini_fileOn syntax error this function will return FALSE rather than an empty array.
 roundThe inner workings of round was changed to conform to the C99 standard.
 strtotimeIn PHP 5 prior to 5.2.7, requesting a given occurrence of a given weekday in a month where that weekday was the first day of the month would incorrectly add one week to the returned timestamp. This has been corrected in 5.2.7 and later versions.
5.2.6fopenThe 'c' and 'c+' options were added
5.2.5addcslashesThe escape sequences \v and \f were added.
 debug_backtraceAdded the optional parameter provide_object.
 imagefilterAlpha support for IMG_FILTER_COLORIZE was added.
5.2.4array_sliceThe default value of the length parameter was changed to NULL. A NULL length now tells the function to use the length of array. Prior to this version, a NULL length was taken to mean a zero length (nothing will be returned).
 checkdnsrrTXT type was added.
 get_loaded_extensionsThe optional zend_extensions parameter was added
 ldap_first_attributeThe ber_identifier was removed. This is now handled automatically by PHP.
 ldap_next_attributeThe ber_identifier was removed. This is now handled automatically by PHP.
 parse_ini_fileKeys and section names consisting of numbers are now evaluated as PHP integers thus numbers starting by 0 are evaluated as octals and numbers starting by 0x are evaluated as hexadecimals.
 stream_wrapper_registerAdded the flags parameter.
5.2.3getimagesizeRead errors generated by this function downgraded to E_NOTICE from E_WARNING.
 htmlentitiesThe double_encode parameter was added.
 htmlspecialcharsThe double_encode parameter was added.
 json_decodeThe nesting limit was increased from 20 to 128
 XMLWriter::writeElementThe content parameter became optional.
 XMLWriter::writeElementNSThe content parameter became optional.
 PDOStatement::getColumnMetatable field
5.2.2 - 5.2.6substrIf the start parameter indicates the position of a negative truncation or beyond, false is returned. Other versions get the string from start.
5.2.2DOMDocument::registerNodeClassPrior to 5.2.2, a previously registered extendedclass had to be unregistered before being able to register a new class extending the same baseclass.
 ftp_ssl_connectThe function was changed to return FALSE when it can't use an SSL connection, instead of fallbacking to a non-SSL one as previously.
 phpinfoThe "Loaded Configuration File" information was added, when before only "Configuration File (php.ini) Path" existed.
 preg_matchNamed subpatterns now accept the syntax (?<name>) and (?'name') as well as (?P<name>). Previous versions accepted only (?P<name>).
 preg_match_allNamed subpatterns now accept the syntax (?<name>) and (?'name') as well as (?P<name>). Previous versions accepted only (?P<name>).
 proc_terminatePrevious versions used to destroy the given process resource.
 token_get_allLine numbers are returned in element 2
5.2.1iterator_to_arrayThe use_keys parameter was added.
 json_decodeAdded support for JSON decoding of basic types.
 memory_get_peak_usageCompiling with --enable-memory-limit is no longer required for this function to exist.
 memory_get_usageCompiling with --enable-memory-limit is no longer required for this function to exist.
 mt_srandThe Mersenne Twister implementation in PHP now uses a new seeding algorithm by Richard Wagner. Identical seeds no longer produce the same sequence of values they did in previous versions. This behavior is not expected to change again, but it is considered unsafe to rely upon it nonetheless.
 proc_openAdded the bypass_shell option to the other_options parameter.
5.2.0base64_decodestrict added
 curl_multi_info_readmsgs_in_queue was added.
 error_reportingE_RECOVERABLE_ERROR introduced.
 imagettftextIt is now possible to specify an hexadecimal entity in text.
 imap_openn_retries added
 imap_reopenn_retries added
 mb_strrposAdded the optional parameter offset.
 memory_get_peak_usagereal_usage was added.
 memory_get_usagereal_usage was added.
 openssl_verifyThe signature_alg parameter was added.
 pathinfoThe PATHINFO_FILENAME constant was added.
 pg_escape_byteaconnection added
 pg_escape_stringconnection added
 session_get_cookie_paramsThe "httponly" entry was added in the returned array.
 session_set_cookie_paramsThe httponly parameter was added.
 set_error_handlerThe error handler must return FALSE to populate $php_errormsg.
 setcookieThe httponly parameter was added.
 setrawcookieThe httponly parameter was added.
 snmp_set_oid_numeric_printSince PHP 5.2.0.
 PDOStatement::executeThe keys from input_parameters must match the ones declared in the SQL. Before PHP 5.2.0 this was silently ignored.
 SimpleXMLElement::childrenThe optional parameter is_prefix was added.
 SimpleXMLElement::__constructAdded the ns and is_prefix parameters.
 SoapServer::SoapServerAdded the typemap option.
 XMLReader::openencoding and options were added.
 XMLReader::XMLencoding and options were added.
5.1.3DirectoryIterator::__constructThrows RuntimeException if the path is an empty string.
 curl_getinfoIntroduced CURLINFO_HEADER_OUT.
 get_headersThis function now uses the default stream context, which can be set/changed with the stream_context_set_default function.
 http_build_querySquare brackets are escaped.
 imagecolorallocateReturns FALSE if the allocation failed. Previously -1 was returned.
 imagecolorallocatealphaReturns FALSE if the allocation failed. Previously -1 was returned.
 imagepngAdded the filters parameter.
 mb_get_infoThe entries "mail_charset", "mail_header_encoding", and "mail_body_encoding" were made available.
 SoapClient::__doRequestThe one_way parameter was added.
 XMLReader::getAttributeReturn NULL if no attribute found. Previously, returned an empty string.
5.1.2date_default_timezone_setThe function started to validate the timezone_identifier parameter.
 headerThis function now prevents more than one header to be sent at once as a protection against header injection attacks.
 http_build_queryThe arg_separator parameter was added.
 imagepngAdded the quality parameter.
 parse_urlAdded the component parameter.
 SimpleXMLElement::__constructAdded the options and data_is_url parameters.
5.1.1dateThere are useful constants of standard date/time formats that can be used to specify the format parameter.
 debug_backtraceAdded the current object as a possible return element.
 gmdateThere are useful constants of standard date/time formats that can be used to specify the format parameter.
5.1.0DirectoryIterator::__constructThrows RuntimeException on error. Previously, threw Exception.
 DOMDocument::saveAdded the options parameter
 DOMDocument::saveXMLAdded the options parameter
 class_implementsAdded the option to pass the class parameter as a string. Added the autoload parameter.
 class_parentsAdded the option to pass the class parameter as a string. Added the autoload parameter.
 ctype_digitBefore PHP 5.1.0, this function returned TRUE when text was an empty string.
 curl_setoptIntroduced CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTH, and CURLOPT_TIMECONDITION.
 dateThe valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).
 dateNow issues the E_STRICT and E_NOTICE time zone errors.
 date_sunriseNow issues the E_STRICT and E_NOTICE time zone errors.
 date_sunsetNow issues the E_STRICT and E_NOTICE time zone errors.
 explodeSupport for negative limits was added
 fgetcsvThe length is now optional. Default is 0, meaning no length limit.
 file_get_contentsAdded the offset and maxlen parameters.
 file_put_contentsAdded support for LOCK_EX and the ability to pass a stream resource to the data parameter
 get_parent_classIf called without parameter outside object, this function would have returned NULL with a warning, but now returns FALSE.
 gettimeofdayThe return_float parameter was added.
 globGLOB_ERR was added
 gmdateThe valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).
 gmmktimeAs of PHP 5.1.0, the is_dst parameter became deprecated. As a result, the new timezone handling features should be used instead.
 idateNow issues the E_STRICT and E_NOTICE time zone errors.
 imagerotateignore_transparent was added.
 intvalThrows E_NOTICE and returns 1, when an object is passed to var.
 localtimeNow issues the E_STRICT and E_NOTICE time zone errors.
 md5_fileChanged the function to use the streams API. It means that you can use it with wrappers, like md5_file('http://example.com/..')
 mktimeNow issues the E_STRICT and E_NOTICE time zone errors.
 mktimeThe is_dst parameter became deprecated. Made the function return FALSE on error, instead of -1. Fixed the function to accept the year, month and day to be all passed as zero.
 mktimeWhen called with no arguments, mktime throws E_STRICT notice. Use the time function instead.
 mssql_connectThe new_link parameter was added
 openssl_pkcs7_verifyThe content parameter was added.
 preg_replaceAdded the count parameter
 preg_replace_callbackThe count parameter was added
 session_regenerate_idAdded the delete_old_session parameter.
 sha1_fileChanged the function to use the streams API. It means that you can use it with wrappers, like sha1_file('http://example.com/..')
 str_word_countAdded the charlist parameter
 stream_copy_to_streamAdded the offset parameter
 stream_filter_appendPrior to PHP 5.1.0, this function returns TRUE on success or FALSE on failure.
 stream_filter_prependPrior to PHP 5.1.0, this function returns TRUE on success or FALSE on failure.
 stream_get_contentsThe offset was added.
 strftimeNow issues the E_STRICT and E_NOTICE time zone errors.
 strtotimeNow returns FALSE on failure, instead of -1.
 strtotimeNow issues the E_STRICT and E_NOTICE time zone errors.
 substr_compareAdded the possibility to use a negative offset.
 substr_countAdded the offset and the length parameters
 var_exportPossibility to export classes and arrays containing classes using the __set_state() magic method.
 XSLTProcessor::registerPHPFunctionsThe restrict parameter was added.
5.0.5php_check_syntaxThis function was removed from PHP.
5.0.4msql_fetch_arrayA bug was fixed when retrieving data from columns containing NULL values. Such columns were not placed into the resulting array.
 msql_fetch_objectA bug was fixed when retrieving data from columns containing NULL values. Such columns were not placed into the resulting array.
 msql_fetch_rowA bug was fixed when retrieving data from columns containing NULL values. Such columns were not placed into the resulting array.
5.0.3get_class_varsDepending on the scope, get_class_vars will only return the properties that can be accessed from the current scope.
 is_subclass_ofYou may also specify the object parameter as a string (the name of the class)
 php_check_syntaxCalling exit after php_check_syntax resulted in a Segfault.
5.0.2array_sliceThe optional preserve_keys parameter was added.
 class_existsNo longer returns TRUE for defined interfaces. Use interface_exists.
 get_class_varsCalling get_class_vars will now expose all the properties as an array, unlike previous behaviour where protected and private properties were prefixed with nul bytes.
 sortAdded SORT_LOCALE_STRING
 strtotimeIn PHP 5 up to 5.0.2, "now" and other relative times are wrongly computed from today's midnight. This differs from other versions where it is correctly computed from current time.
5.0.1get_class_varsCalling get_class_vars will expose all properties, as when converting an object to a class.
 php_check_syntaxerror_message is passed by reference.
5.0.0apache_get_modulesBecame available when using Apache 1, or the PHP Apache 2 filter API. Before this time, it was only available when using the Apache 2 handler API.
 curl_setoptIntroduced CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPE, and CURLOPT_HTTP200ALIASES.
 dirnamedirname is now binary safe
 error_reportingE_STRICT introduced (not part of E_ALL).
 is_aThis function became deprecated in favour of the instanceof operator. Calling this function will result in an E_STRICT warning.
 opendirpath supports the ftp:// URL wrapper.
 parse_ini_fileValues enclosed in double quotes can contain new lines.
 renamerename can now also be used with some URL wrappers. Refer to for a listing of which wrappers support rename.
 rmdirAs of PHP 5.0.0 rmdir can also be used with some URL wrappers. Refer to for a listing of which wrappers support rmdir.
 strip_tagsstrip_tags is now binary safe.
 strrposThe needle may now be a string of more than one character.
 strtotimeMicroseconds began to be allowed, but they are ignored.
 unlinkAs of PHP 5.0.0 unlink can also be used with some URL wrappers. Refer to for a listing of which wrappers support unlink.

Appendices
PHP Manual