You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2483 lines
138 KiB

23 years ago
23 years ago
23 years ago
23 years ago
23 years ago
23 years ago
23 years ago
24 years ago
23 years ago
23 years ago
23 years ago
23 years ago
23 years ago
23 years ago
23 years ago
23 years ago
23 years ago
23 years ago
23 years ago
23 years ago
23 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
23 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
24 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
24 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
25 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
25 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
26 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
26 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
Generalized server-API build process on UNIX. Each SAPI implementation now has its own directory under sapi/, just like extensions have theirs under ext/. To make the final targets appear in the main dir, the top-level Makefile includes sapi/NN/Makefile.inc from the selected sapi backend. This is a plan Makefile stub without any autoconf substitutions. Each SAPI backend also has its own config.m4 like extensions (read at the end of diversion 2) and config.h.stub files. Each SAPI backend has to contain: config.m4: just like for extensions, this file contains autoconf/automake directives that end up in the configure script. The only difference is that the sapi config.m4 files are read in diversion (output block) 2 instead of 3. The sapi config.m4 files should set two variables: PHP_SAPI (which sapi backend to choose) and SAPI_TARGET (the name of the resulting library or program, previously BINNAME). If they are not specified, they will default to "cgi" and "php", respectively. Makefile.inc: has to exist, has to define "INSTALL_IT" to the command used to install the final target (or ":" for no operation). It also has to define a plain Makefile rule (without autoconf substitutions) to build $(SAPI_TARGET) Makefile.am: just what you think. Make sure your target is called "libphpsapi_NNN.a", where NNN is the value of PHP_SAPI. Some testing and fixing probably remains. To make everything hang together, I've done some ugly tricks that I can imagine causing some problems. I've built and run the CGI version and built the Apache DSO.
27 years ago
27 years ago
26 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
27 years ago
  1. PHP 4 NEWS
  2. |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  3. ? ? ??? 200?, Version 5.0.0
  4. - Fixed bug #17448 (Print the message when OCI_SUCCESS_WITH_INFO is returned).
  5. (Maxim)
  6. - Fixed bug #20155 (xmlrpc compile problem with ZE2). (Derick, Jan Schneider)
  7. - Fixed bug #20442 (upgraded bundled expat to 1.95.5). (Ilia)
  8. - Changed ext/mcrypt to require libmcrypt version 2.5.3 or greater. (Derick)
  9. - Changed uniqid() parameters to be optional and allow any prefix length.
  10. (Marcus)
  11. - Improved JPEG 2000 support for getimagesize(). (Marcus, Adam Wright)
  12. - Improved array_search() to accept objects as a needle under ZE2. (Moriyoshi)
  13. - Added OCIPasswordChange() which allows renewing expired Oracle users. (Maxim)
  14. - Added string.base64 stream filter. (Moriyoshi)
  15. - Added domxml_node_get_path() (Lukas Schr�der)
  16. - Added iconv related functions (Moriyoshi)
  17. . iconv_strlen()
  18. . iconv_substr()
  19. . iconv_strpos()
  20. . iconv_strrpos()
  21. . iconv_mime_decode()
  22. . iconv_mime_encode()
  23. - Added new range() functionality (Ilia)
  24. . Support for float modifier.
  25. . Detection of numeric values inside strings passed as high & low.
  26. . Proper handle the situations where high == low.
  27. - Added imagefilter() function which allows application of various filters.
  28. This function is only available with bundled GD. (Pierre-Alain Joye, Ilia)
  29. - Added imageistruecolor(), only available with GD2. (Pierre-Alain Joye)
  30. - Added antialiased drawing support (Pierre-Alain Joye, Ilia), available only
  31. with bundled GD:
  32. . imageantialias($im, $flag) to (de)active antialias
  33. . imageline antialias support
  34. . imagepolygon antialias support
  35. 27 Dec 2002, Version 4.3.0
  36. - Make PHP_AUTH_* variables not available in safe mode under Apache when an
  37. external basic auth mechanism is used. (Philip)
  38. - Aliased dba_popen() to dba_open() until 4.3.1 when persistent STDIO streams
  39. are introduced. (Andrei)
  40. - Fixed a security bug in the bundled MySQL library. (Georg, Stefan)
  41. - If you don't specify building any other SAPI "make install" will install the
  42. CGI SAPI binary in {PREFIX}/bin/php. If you want to install CLI SAPI in that
  43. location use "make install-cli" after "make install" or add --disable-cgi
  44. to your configure options. In the Windows distribution CLI SAPI is included
  45. in the "cli" folder. (Edin)
  46. - Removed extensions: (Jan, Jani, Sebastian)
  47. . ext/aspell
  48. . ext/ccvs
  49. . ext/cybercash
  50. . ext/icap
  51. . sapi/fastcgi
  52. . sapi/fhttpd
  53. - Moved extensions to PECL (http://pear.php.net/): (James, Derick)
  54. . ext/vpopmail
  55. . ext/cybermut
  56. - ZLIB extension is now built-in in the Windows distribution.
  57. External extension (php_zlib.dll) has been removed. (Edin)
  58. - Fix a crash when using invalid color index with imagecolortransparent()
  59. (Pierre-Alain Joye).
  60. - Fixed bug #20987 (no handling for client certificates). (Ilia)
  61. - Fixed bug #21039 (crash when not supplying an IV to mcrypt_generic_init).
  62. (Derick)
  63. - Fixed bug #20936 (openssl_pkey_get was broken). (jeroen@derks.it, Wez)
  64. - Fixed bug #20927 (wordwrap crash). (Ilia)
  65. - Fixed bug #20796 (when register_globals is on & arrays with same names are
  66. passed via get/post/cookie the data inside $_GET/$_POST/$_COOKIE can would be
  67. corrupted). (Ilia)
  68. - Fixed bug #20725 (if the upload directory cannot be written to, the POST data
  69. after the uploaded file is lost). (Ilia)
  70. - Fixed bug #20865 (array_key_exists() fails to find NULL key). (Ilia)
  71. - Fixed bug #20812 (ftp_get returned NULL on success, instead of TRUE). (Ilia)
  72. - Fixed bug #20785 (crash when using pdf_open_memory_image() to load a
  73. true-color image). (Ilia)
  74. - Fixed a crash when converting between true-color images (png/jpeg) and
  75. gd1/gd2 image formats, png/jpeg -> gd1/gd2 -> png/jpeg conversion now
  76. works correctly. (Ilia, (Pierre-Alain Joye).
  77. - Fixed a memory leak in the bundled GD library inside
  78. gdImageTrueColorToPalette(). (Ilia)
  79. - Fixed bug #12776 (array_walk crash). (Moriyoshi)
  80. - Fixed bug #20934 (htmlspecialchars returns latin1 from UTF-8). (Moriyoshi)
  81. - Fixed bugs #20270, #15702, #18600 (segfaults in ext/java). (Tony J. White)
  82. - Made bcmath extension thread safe. (Sander)
  83. - Fixed bug #19566 (get_declared_classes() segfaults). (Moriyoshi, Marcus, Andi)
  84. - Fixed bug #20381 (array_merge_recursive mangles input arrays). (Moriyoshi)
  85. - Added -n command switch to cli and cgi version which allows to skip php.ini
  86. parsing at startup. (Marcus, Wez)
  87. - Fixed bug #19689 (absolute paths like /test/dir/ not working correctly).
  88. (Ilia)
  89. - Added "neutral" language entry to mbstring spec. (Moriyoshi)
  90. - Changed bundled gd library to consider php.ini option memory_limit. (Marcus)
  91. - Modified log() to accept multiple bases. (Jason)
  92. - Fixed bugs #16190/18746 (ext/db: flatfile support with windows). (Marcus)
  93. - Added gd_info() which returns an array of gd support information. (Marcus)
  94. - Implemented features/changes requested in Bug #16960 (Timm):
  95. . Added a new function sybase_unbuffered_query()
  96. . Added a new function sybase_fetch_assoc()
  97. . Added sybase_set_message_handler() which enables users to handle
  98. server messages in a callback function
  99. . Added an ini entry for deadlock retries - retrying deadlocks can cause
  100. transaction state to break (sybct.deadlock_retry_count,
  101. defaults to -1 "forever").
  102. . Fixed sybase_fetch_object() not to return objects with numeric members
  103. . Fixed issues with identical fieldnames
  104. . Made sybase_fetch_*() functions return correct datatypes
  105. . Made phpinfo() section more verbose
  106. . Made sybase_query() error messages more verbose
  107. - Fixed bug #19935 (made OpenSSL file system operations abide by safe_mode
  108. & open_basedir restrictions). (Ilia)
  109. - Fixed bug #18868 (improved the check for availability of realpath()). (Ilia)
  110. - Fixed width/height detection of bmp images using getimagesize() function on
  111. big endian systems and added code to retrieve bmp bit depth. (Ilia)
  112. - Fixed bug #20035 (line counting error when script starts with #! in
  113. cgi/cli/fastcgi sapis). (Ilia)
  114. - Fixed bug #20235 (incorrect handling of symlinks on ZTS build). (Ilia)
  115. - Added sanity checks to headers_sent() & image_type_to_mime_type(). (Ilia)
  116. - Added an aditional parameter to the jdtojewish() function which makes
  117. the function return the symbolic hebrew name. (Moshe Doron, Derick)
  118. - Fixed bug #20169 (implode() clobbers first argument). (Moriyoshi)
  119. - Improved dba extension (Marcus)
  120. . Added dba_handlers() that returns an array of installed handlers and
  121. dba_list() that returns an associative array of open database files.
  122. . Added bundled cdb support wich can be activated by --with-cdb without a
  123. path. The bundled version supports cdb_make that allows writing cdb files.
  124. . Added optional skip parameter to dba_fetch() to support multiple key-value
  125. pairs with the same key for cdb handler.
  126. . Added locking for those handlers that do not have their own locking.
  127. . Added support for magic_quotes_runtime php.ini option.
  128. . Added flatfile support what finally makes ext/db deprecated.
  129. - Added imagerotate() which is available only when bundled libgd is used.
  130. (Pierre-Alain Joye, Ilia)
  131. - Fixed bug #17497 (mssql extension crashes if magic_quotes_runtime is on).
  132. (Sterling)
  133. - Remove $_FILES from $_REQUEST (import_request_variables is not modified),
  134. this didn't work properly in the first place, and added confusion. (Sterling)
  135. - Fix the socket_read() function on win32 to work in normal mode (reading to
  136. the end of a line), as well as binary mode. (Sterling)
  137. - Fixed bug #20110 (added sanity check to prevent include/require functions
  138. from trying to include directories). (Ilia)
  139. - Fixed bug #20108 (segmentation fault on printf("%1.1s", "string")). (Ilia)
  140. - Added dbx_escape_string() function to dbx module. (Marc)
  141. - Added Oracle (oci8) support to dbx module. (Marc)
  142. - Updated FDF extension to work with Adode fdftk 5.0. (Hartmut)
  143. - Added mb_strtolower() and mb_strtoupper(). (Moriyoshi)
  144. - Fixed an infinite loop in setlocale() when only invalid locale names
  145. were passed in the array. (patch by Pal Loberg, pallo@initio.no)
  146. - Fixed bugs #19156 and #19544 (COM extension leaks memory and keeps
  147. components referenced). (Harald)
  148. - Added fribidi_get_charsets() and fribidi_charset_info() functions. (Tal)
  149. - Added Oracle TIMESTAMP type to oci8 extension. (Thies)
  150. - Fixed fgets($fp) to read until EOL when length parameter is not set. (Wez)
  151. - Changed registry entries under "HKLM\SOFTWARE\PHP\Per Directory Values" to
  152. work also with administrative directives such as safe_mode, open_basedir,
  153. etc. (Claudio Felber)
  154. - Added str_word_count() function which counts words inside a string. (Ilia)
  155. - Added PGSQL_CONNECT_FORCE_NEW option to pg_connect() (Yasuo)
  156. - Added ICONV_IMPL and ICONV_VERSION constants to iconv extension to
  157. indicate which iconv implementation is used. (Moriyoshi)
  158. - Fixed bug #4232 (Added %e & %E support to printf/sprintf). (Ilia)
  159. - Fixed bug #17580 (Allow ini parser to parse files >16K). (Ilia)
  160. - Fixed bug #19649 (Sanity checks for browscap.ini parser). (Ilia)
  161. - Added experimental patch to address problem with floats on various locales.
  162. (Bug #17079). (Ilia)
  163. - Fixed bug #19280 (imap_header fails with many To: addresses). (Ilia)
  164. - Added mb_regex_set_options(). The Options parameters of various mbregex
  165. functions are now deprecated. (Moriyoshi)
  166. - Fixed bug #19482 (Segfault with PCRE and locale). (Andrei)
  167. - Made ImageTruecolorToPalette() in bundled GD2 library actually work. (Rasmus)
  168. - Fixed ImageCopy() in bundled GD2 library to handle copying from truecolor to
  169. palette-based. (Wez, Rasmus)
  170. - Added read-only GIF support for bundled GD2 library. (Rasmus)
  171. - Made several adjustments to xslt extension (David Viner, Lehnar, Melvyn)
  172. . Added xslt_set_object and xslt_setopt function
  173. . Changed backend interaction with Sablotron library
  174. . Fixed leak with error_print
  175. . Made xslt_make_array() always set NULL on last index to signal array end.
  176. - Changed the glue argument in implode() to be optional. If not specified,
  177. defaults to "". (Sterling)
  178. - Fixed fields argument to contain correct info for xslt_set_error_handler().
  179. (Patch by Lenar Lohmus)
  180. - Added --with-config-file-scan-dir compile-time switch which specifies a
  181. directory which will be scanned for *.ini files. (Rasmus)
  182. - Added ob_get_clean() and ob_get_flush(). (Yasuo)
  183. - Added ftp_ssl_connect() to ext/ftp for FTP over SSL support. (Stefan Esser)
  184. - Made a few additions and changes to Apache 2 sapi. (Ilia)
  185. . Added apache_response_headers(), apache_note(), apache_getenv() and
  186. apache_setenv() functions.
  187. . Added more detailed error reporting to apache_lookup_uri() and virtual().
  188. . Renamed getallheaders() to apache_request_headers() and made an alias for BC.
  189. . Added php_apache_sapi_getenv() and php_apache_sapi_get_stat().
  190. . Added syntax-highlighting handling (.phps)
  191. - Fixed strstr(), strchr() and strrchr() to be binary safe. (Andrey)
  192. - Added array_diff_assoc() and array_intersect_assoc(). (Andrey)
  193. - Fixed bug #17825 (ob_start() chunk size option didn't work well). (Yasuo)
  194. - Fixed output buffer infinite loop when buffer_size became 0. (Marcus, Wez)
  195. - Added getopt() for parsing command line options and arguments. (Jon)
  196. - Added pg_fetch_assoc(), pg_fetch_all(), pg_ping(), pg_meta_data(), pg_convert(),
  197. pg_insert(), pg_select(), pg_update(), pg_delete(), pg_result_seek(),
  198. pg_unescape_bytea(), pg_get_notify() and pg_get_pid(). (Yasuo)
  199. - Fixed bug #17281 (Sanity checks for encoding sessions). (Ilia)
  200. - Fixed bug #16995 and #19392 (Prevent crash if $HTTP_SESSION_VARS != ARRAY).
  201. (Ilia)
  202. - Fixed bug #19292 (open_basedir restriction problem). (Rasmus)
  203. - Fixed bug #19366 (gdImageFill crashes when x & y are outside of
  204. the image's boundries). (Ilia)
  205. - Fixed bug #13936 (__FILE__ constant didn't contain full path). (Ilia)
  206. - PHP now has a new stream system that allows it to do some clever stuff with
  207. fopen() and fsockopen(). As a result:
  208. . URL wrappers natively supports https:// URLs if you have compiled
  209. OpenSSL support into PHP (shared extension does not support this).
  210. . Added support for fopen("ftps://...", ...) which allows to connect to FTP
  211. servers via SSL. (Stefan Esser)
  212. . fsockopen() adds support for ssl:// and tls:// connections via TCP/IP
  213. . copy($srcfilename, $destfilename) can now be used with URL wrappers
  214. . zlib wrappers/streams can be used even on systems without fopencookie()
  215. . Changed 'zlib:' fopen wrapper to 'compress.zlib://' and deprecate
  216. 'zlib:' to avoid ambiguities when filenames have ':' characters. (Wez)
  217. . Added 'compress.bzip2://' stream and wrapper support.
  218. . Added user-space streams - it is now possible to define a class in PHP
  219. code and register it as a URL wrapper. (stream_register_wrapper)
  220. . Most extensions now support streams when passing files, which means
  221. that those extensions will now also support URL wrappers. (Wez)
  222. . Added URL-wrapper support to exif. (Marcus)
  223. . Added memory stream support. (Marcus)
  224. . Renamed:
  225. socket_set_timeout() -> stream_set_timeout()
  226. socket_set_blocking() -> stream_set_blocking()
  227. set_file_buffer() -> stream_set_write_buffer()
  228. socket_get_status() -> stream_get_meta_data()
  229. As these functions can (in theory) work on any type of stream. (Wez)
  230. . Raw POST data is now available as "php://input" stream. (Hartmut)
  231. . fopen("php://output", "wb") returns a stream that writes to the output
  232. buffer (like echo and print). (Wez)
  233. . Added stream_context_create(), stream_context_set_params() and
  234. stream_context_set_option and added an optional fourth parameter to
  235. fopen() which accepts a stream context. Contexts allow sharing of
  236. information between streams (a kind of "session") and setting
  237. notification callbacks. (Wez)
  238. . Made the "User-Agent" header sent by http:// and https:// wrappers
  239. configurable in php.ini or via a stream context. (Sterling)
  240. . Added stream_filter_prepend() and stream_filter_append() which apply
  241. a filter to either the top or the bottom of a stream filter stack.
  242. Implemented "string.rot13" filter as an example; more filters are
  243. expected to follow in later releases and other extensions. (Wez)
  244. . Added stream_select() which works like socket_select but works on
  245. streams returned by fopen(), fsockopen() and pfsockopen() instead. (Wez)
  246. . Added STDIN, STDOUT and STDERR constants for CLI sapi reflecting opened
  247. streams to their respective standard I/O counterparts. (Edin)
  248. . Added php.ini option "auto_detect_line_endings" which enables PHP to
  249. detect Macintosh, Unix and Dos end-of-line characters in fgets() and
  250. file(). Fixes bugs #16521 and #16708. (Wez)
  251. . Fixed include(), require() and GD functions to work with remote files
  252. under win32.
  253. Fixed bug #18609 (ImageCreateFromJPEG can't fetch from a URL). (Wez)
  254. - Fixed bug #18022 (fopen does not work with php://stdin anymore on Solaris).
  255. (Wez)
  256. - Added php.ini option "default_socket_timeout" to set the timeout limit for
  257. PHP network streams. (kalowsky, ilia@prohost.org, Wez)
  258. - Added file_get_contents() which returns the contents of a file as a string.
  259. This function also supports the URL wrappers. (Wez)
  260. - Fixed bug #19595 (Missing functions for GD2 format handling). (Edin)
  261. - Fixed bug #19633 (Wrong directories in ext/ldap/config.m4). (Derick)
  262. - Fixed bugs #17274 and #19627 (segfault in sem_remove). (Wez)
  263. - Added mb_convert_case() function to the mbstring extension which can convert
  264. strings between upper, lower and title case using Unicode mappings.
  265. Fixed bug #19257 (strtolower & strtoupper does not work for UTF-8 strings).
  266. (Wez)
  267. - Fixed bug #18521 (htmlentities didn't warn about unsupported charsets). (Wez)
  268. - Fixed bug #11643 (Session related, fix SID redefinition). (Ilia)
  269. - Fixed bug #18556 (Scripting Engine, problem with locales like tr_TR). (Ilia)
  270. - Changed y2k_compliance to default to 1 now. (Sascha)
  271. - Added platform independent socket error constants for better error handling. (Jason)
  272. - Update output of phpinfo() to use more CSS to reduce the file size, do
  273. proper HTML escaping, and make it XHTML compliant. (Colin)
  274. - Fixed compile errors in the FriBidi extension (Bug #16414). (Tal)
  275. - Fixed bugs #7472, #12120 and #12989 as well as other potential problems
  276. with strip_tags() function. (Ilia)
  277. - Fixed bugs #17570 and #17957 (Regexps related). (Andrei, Ilia)
  278. - Fixed bugs #18167 and #16859 (SEGV with session_decode). (Ilia)
  279. - Fixed bugs #19573 and #13472 (Session, XHTML compliance and trans_sid).
  280. (Sascha)
  281. - Fixed bug #19570 (last character was missing in get_html_translation_table).
  282. (Wez)
  283. - Upgraded PCRE to version 3.9. (Wez)
  284. - Fixed bug in OCIResult() which returned garbage when called on
  285. empty result-sets. (Thies)
  286. - Added ability to use Perl-style ${n} subpattern references in the
  287. replacement string for preg_replace() (bug #18442). (Andrei)
  288. - Fixed array_merge_recursive() to avoid problems with merging cyclical
  289. arrays (bug #16064). (Andrei)
  290. - Made function_exists() work properly with disabled functions. (Andrei)
  291. - Added ability to extract() variables as references via OR'able EXTR_REFS
  292. flag. (Andrei)
  293. - Fixed a build failure with the OCI8 extension on Tru64.
  294. (Patch by Michael Mauch, micahel.mauch@gmx.de)
  295. - Added --disable-all configure option. (Jani)
  296. - Backported debug_backtrace() from ZendEngine2. (Thies)
  297. - Added html-free phpinfo() output for CLI. (Jan)
  298. - Fixed socket_recvfrom() to be binary safe. (Jason)
  299. - Changed mail() to use escape_shell_cmd() to allow multiple extra parameters
  300. to the invocation of the mailer as used in the fifth parameter. (Derick)
  301. - Changed cURL extension to require cURL version 7.9.8 (Derick)
  302. - Added zend_execute_internal which is called like zend_execute but for
  303. internal functions. (Thies)
  304. - Changed pg_connection_status(), pg_connection_reset(), pg_connection_busy(),
  305. pg_result_status() and pg_result_error() to silently return FALSE when
  306. resource is not passed to them. (Yasuo)
  307. - Fixed some mysql compile failures on 64 bit-OS. (Georg)
  308. - Added warnings for deprecated mysql functions:
  309. . mysql_create_db()
  310. . mysql_drop_db()
  311. . mysql_escape_string()
  312. - Added XsltObject->result_dump_mem($result) for returning xslt-result directly
  313. into a string and XsltObject->result_dump_file($result,$file[,$compression])
  314. for dumping into a file. (morus.walter@web.de, chregu)
  315. - Made mime_magic and ZIP extensions available on Windows. (Edin)
  316. - Added xslt_backend_version() and xslt_backend_name() for getting
  317. information about the processor backend. (chregu)
  318. - Added php.ini option "allow_webdav_methods" to allow handling of
  319. WebDAV http requests within PHP scripts. (chregu)
  320. - Added ImageColorMatch() and ImageLayerEffect() functions which are only
  321. available when using the bundled GD library. (ttoohey)
  322. - Made major improvents to the pcntl extension. (Jason)
  323. . Greatly improved performance (signal callback mechanism uses ticks)
  324. . Implemented object signal callback ability by using array($obj, $method)
  325. . Added a restart parameter to pcntl_signal, which allows you to disable
  326. the default of system call restarting
  327. - Changed DomNode->next_sibling() and DomNode->previous_sibling() to return
  328. NULL instead of false (W3C specs). (chregu)
  329. - Changed DomNode->insert_before() and DomNode->append_child() to conform to
  330. W3C specs (moving not copying nodes, accepting NULL as 2nd param). (chregu)
  331. - Added DomNode->set_namespace(uri[,prefix]) (chregu)
  332. - Fixed shuffle() to properly generate all possibilities. (Patch provided by
  333. Adam <adam@trachtenberg.com>)
  334. - Fixed DomNode->insert_before() to behave according to W3C spec
  335. ie. new_child is moved, not copied. (chregu)
  336. - Added some namespace support with DomNode->add_namespace(uri, prefix)
  337. and DomDocument->create_element_ns(uri, nodename) (chregu)
  338. - Added optional parameter to DomElement->node_name() for retrieving fully
  339. qualified name (ie. namespace prefix). (chregu)
  340. - Changed DomNode->child_nodes() to return empty array instead of false if no
  341. child nodes are found. (chregu)
  342. - Fixed a bug with handling the Expect header. (Patch by ilia@prohost.org)
  343. - Fixed a bug in ODBC where closing the module caused a crash in the Windows
  344. executable. (kalowsky)
  345. - Fixed memory leaks in pack() and unpack(). (Patch by ilia@prohost.org)
  346. - Added URLs to error messages which direct to a page describing the error or
  347. function in question. (Derick, Wez, Marcus)
  348. - Added odbc_data_source() functionality to identify DB ServerName, and a
  349. description of it gathered from the DSN. (kalowsky)
  350. - Fixed copy() to return TRUE with 0 byte files. (Patch by ilia@prohost.org)
  351. - Added ob_list_handlers() which returns an array of all active output
  352. handlers. (Marcus)
  353. - Added mbstring encoding/decoding "HTML-ENTITIES". (Marcus)
  354. - Added parameter 'L' for mb_http_input() to retrieve input encoding as a
  355. comma separated string. (Marcus)
  356. - Added the ability for declare() compiler modifications to occur globally
  357. by using an empty statement. (Jason, Zend Engine)
  358. i.e.
  359. //Globally enables the ticks modifier for the whole program
  360. declare (ticks=1);
  361. //Enables the ticks modifier for just the lexical block containing
  362. //"statement".
  363. declare (ticks=1) {
  364. statement;
  365. }
  366. - Brought strtotime() "next" keyword handling in line with documentation and
  367. its glibc cousin. (Rasmus)
  368. - Fixed str_rot13() to not mangle source string. (Rasmus)
  369. - Fixed imap_get_quota() to work with multiple returned resources as per
  370. the RFC 2087 and bug #14673. (kalowsky, Sander Steffann)
  371. - Added MarkerNote decoding to exif_read_data() for several Cameras. (Marcus)
  372. - Disabled zlib.output_compression for "image/" content-type
  373. headers which can be changed during script execution. (Stefan)
  374. - Added new asynchronous FTP functions. (Stefan)
  375. - Added optional 5th parameter to FTP functions to support resuming. (Stefan)
  376. - Added optional 2nd parameter to print_r() to make it return the variable
  377. representation instead of echoing it. (Derick)
  378. - Added mysql_ping(), mysql_real_escape_string(), mysql_character_set_name(),
  379. mysql_thread_id(), mysql_stat() and mysql_list_processes(). (Zak, Georg)
  380. - Added safe_mode & open_basedir checks for pg_lo_export(). (Yasuo)
  381. - Added open_basedir check for pg_lo_import(). (Yasuo)
  382. - Fixed infinite recursion crash bug in ticks. (Jason)
  383. - Added php.ini option "mysql.connect_timeout" to set the timeout limit for
  384. mysql_connect() and mysql_pconnect(). (Georg)
  385. - Added optional parameter "flags" to mysql_connect() and mysql_pconnect()
  386. which can be used to set usage of idle timeout and different protocols,
  387. SSL and compressed. (Georg)
  388. - Added automatic rollback to ext/mysql for non committed transactions. (Georg)
  389. - Fixed cases where preg_split() incorrectly terminated final element if it
  390. contained null bytes. (Andrei)
  391. - Added persistent connections/pipelining to thttpd. (Sascha)
  392. - Fixed two potential blocking issues in thttpd. (Sascha)
  393. - Fixed broken header file detection on Solaris. (Sascha)
  394. - Improved nss/socket-related symbol/library detection. (Jani, Sascha)
  395. - Made iconv() work well with both libiconv and libgconv. (Moriyoshi, Yasuo)
  396. - Fixed socket_set_timeout() on win32. (Jason, Edin, Jani)
  397. - Added domxml_node_namespace_uri(). (Rui Lopes)
  398. - Fixed win32 memory leak in /ext/sockets that would occur on any error
  399. condition. Also fixed host resolution error messages on win32. (Jason)
  400. - Added optional 3rd parameter 'recursive' to ftp_rawlist() which will
  401. do 'LIST -R' instead of 'LIST'. (Jani)
  402. - Changed getimagesize() to always set unknown fields to 0 and added support
  403. for iff imagetype. (Marcus)
  404. - Added runtime Apache2 thread check to ensure we don't run a non-threaded
  405. PHP inside a threaded Apache2 MPM. (Rasmus)
  406. - Made getimagesize() and exif_read_data() to return also the mime-type and
  407. exif_thumbnail() to return also the image-type. (Marcus)
  408. - Added image_type_to_mime_type() which converts image-types to mime-types.
  409. (Marcus)
  410. - Made GD functions to only exist if they are available in libgd. Now the
  411. availability can be tested with function_exists(). (Derick)
  412. - Added an optional parameter to the header() function which overrides the HTTP
  413. response code. (Derick)
  414. - Changed the order of which modules are unloaded to the reverse order of
  415. which they were loaded. (Derick, Zend Engine)
  416. - Added preliminary SAX-Input support. It's now possible to build a DomDocument
  417. with SAX-Events. (chregu)
  418. - Bundled GD library 2.0.1 with php (ext/gd/libgd) (Rasmus, Jani, Markus, Edin)
  419. - Fixed bug with Apache which let PHP_AUTH_* variables to be set when
  420. external basic auth mechanism was used. (Jani)
  421. - Fixed bzopen() crash in thread-safe mode. (Andrei)
  422. - Added better error-messages (3rd parameter) and validating of DTDs (2nd
  423. parameter) to domxml_open_mem() and domxml_open_file(). (Christian)
  424. - Added domxml_doc_validate() for validating existing DomDocuments with a DTD.
  425. (Christian)
  426. - Added ability to capture string offsets in preg_match_*() results.
  427. (David Brown, Andrei)
  428. - Fixed set_error_handler() to accept methods as callbacks and also report
  429. invalid callbacks. (Andrei)
  430. - Fixed a memory corruption bug in overload extension. (Andrei)
  431. - Fixed error handling in fsockopen() on win32. (Jason)
  432. - Added win32 support for the timeout parameter of fsockopen(). (Jason)
  433. - Fixed shuffle() to provide equal distribution of values. (Andrei)
  434. - Added --with-mysql-sock configure option which can be used to override
  435. the unix socket location. (e.g. NFS compiles, etc.) (James Cox)
  436. - Fixed is_a() to properly work on extension registered classes. (Andrei)
  437. - Added new constants: PHP_PREFIX and PHP_SHLIB_SUFFIX. (Stig)
  438. - Added pctnl_alarm() function. (Edin)
  439. - If zlib.output_compression is enabled and a page is compressed
  440. a "Vary: Accept-Encoding" header is now added. (Stefan)
  441. - Renamed getallheaders() to apache_request_headers() and kept getallheaders()
  442. as an alias to it. Also added apache_response_headers() which returns the
  443. current response headers from Apache. (Rasmus)
  444. - Added missing AddRef() calls in the COM extension. This should fix weird
  445. behaviour (in particular with ADODB). (Harald)
  446. - Fixed segfault in version_compare(). (Stig)
  447. - Added compressed Flash MX files support to getimagesize(). (Derick)
  448. - Added ability to capture string offsets in preg_split() results.
  449. (David Brown, Andrei)
  450. - Fixed a crash bug in token_get_all(). (Andrei)
  451. - Implemented glob() for Unix/Win32. (Hartmut, Edin, Markus)
  452. - Added domxml_doc_set_root() to change the root node. (Lukas Schroeder)
  453. - Fixed a crash bug in stripslashes() when working in sybase mode. (Rasmus)
  454. - Added experimental support for Simplified Chinese, Traditional Chinese and
  455. Korean encodings into mbstring. (Rui)
  456. - Misc. Win32 mail() enhancements: support 'From:' header (msisolak@yahoo.com),
  457. support Bcc header, case-insensitive headers, enhanced error reporting,
  458. automatic proper line ending conversion, fixed crash with Cc, fixed buffer
  459. overflows with $header. (Markus)
  460. - Improved IMAP extension performance. (adam.kauffman@mindspring.com,
  461. rjs3@andrew.cmu.edu, Jon)
  462. - Added optional 5th parameter to domxml_xslt_process(). When set, profiling
  463. information is saved to the specified file. (chregu)
  464. - Added MD5 support for crypt() on Windows. (Edin)
  465. - Fixed resource bug in LDAP extension. (Stig Venaas)
  466. - Fixed crash in output buffering when buffer is overwritten in a callback.
  467. (Yasuo)
  468. - Added output_add_rewrite_var() and output_remove_rewrite_var() to inject
  469. and remove variables from the URL-Rewriter. (Thies)
  470. - The Windows build can now be configured more comfortably, for example
  471. when dealing with built-in extensions. (Sebastian)
  472. - Added large OID value (2^31 to 2^32) support for pg_lo_import(),
  473. pg_lo_unlink(), pg_lo_open() and pg_lo_export(). (Yasuo)
  474. - Fixed mixing OCIPlogon() and OCINLogon() to not leak Oracle-Sessions. (Thies)
  475. - Added php.ini options for EXIF extension to encode and decode Unicode/JIS
  476. user comments. (Marcus)
  477. - Changed the "-c" CLI/CGI option to allow both 'filename' and
  478. 'path to php.ini'. (Yasuo)
  479. - Added version information to the .dll and .exe files created under Windows.
  480. (jtate)
  481. - Added __FUNCTION__ and __CLASS__ constants. (Jani, Zend Engine)
  482. - Added optional 2nd parameter for pg_result_status() to specify return type.
  483. (Yasuo)
  484. - Added "log_errors_max_len" php.ini option which controls maximum length for
  485. error messages. (Marcus)
  486. - Added "ignore_repeated_errors" and "ignore_repeated_source" php.ini options
  487. which can be used to disable logging of repeated error messages. (Marcus)
  488. - Made pg_last_notice() work correctly. (Yasuo)
  489. - Added "pgsql.ignore_notice" and "pgsql.log_notice" php.ini options. (Yasuo)
  490. - Added "zlib.output_compression_level" php.ini option. (Stig)
  491. - Added support for --with-apxs build on Mac OS X / Darwin. (markonen)
  492. - Added support for dynamically loaded extensions on OS X / Darwin.
  493. NOTE: This requires Apache 1.3.25 or later. (kalowsky, markonen)
  494. - Fixed CR/LF processing in quoted_printable_decode() on Win32. (kir)
  495. - Made crack extension available on Win32. Cracklib libraries for Win32 are
  496. available at http://www.jtatesoftware.com/cracklib/. (jtate)
  497. - Added mysql_info() function. (Jan)
  498. - Added mysql_list_processes() and mysql_stat() functions. (Georg)
  499. - Fixed memory allocation problem on systems that have iconv() support in libc.
  500. (Yasuo)
  501. - Made var_dump() handle recursive structures better. (Yasuo, Derick)
  502. - Added exif_imagetype() function. (Marcus)
  503. - New improved build system. Among other improvements, replaces the slow
  504. recursive make with one global Makefile and eases the integration of proper
  505. dependencies. Automake is only needed for its aclocal tool. The build
  506. process is now more portable and less resource-consuming. (Sascha)
  507. 06 Sep 2002, Version 4.2.3
  508. - Disabled the fifth parameter in mail() when safe-mode is turned on. (Derick)
  509. - Enable UTF8 modifier support for PCRE on win32. (Wez, Edin)
  510. - Enabled strcoll() on win32. (Markus)
  511. - Fixed possible ASCII control char injection in mail(). (Stefan Esser)
  512. - Fixed a potential crash bug in import_request_variables() (Zeev)
  513. - Fixed several problems with directory functions on Windows. (Steph)
  514. - Fixed xbithack bug in Apache module. (Rasmus)
  515. - Fixed a bug that prevented touch() from working on various platforms. (Steph)
  516. - Fixed ob_gzhandler()'s handling of requests that do have the Accept-Encoding
  517. header, but do not allow compression. (Zeev)
  518. - Fixed several bugs in the multithreaded version that could cause random parse
  519. errors, especially on machines with multiple CPUs. (Zeev, Zend Engine)
  520. - Fixed a build problem in bcmath. (Alan)
  521. - Fixed several bzip2 issues. (Andrei, kalowsky)
  522. - Fixed several COM issues. (Harald)
  523. - Various exif fixes. (Marcus)
  524. - Fixed domxml_xslt_process() and domxml_get_element_by_id() and several
  525. other issues in DOMXML. (Christian)
  526. - Fixed DOMXML crash on removing previously created attributes. (Christian)
  527. - Fixed crash when converting $GLOBALS to an object. (Zeev, Zend Engine)
  528. - Fixed ImageCreateFromGD2Part() (Jani)
  529. - Fixed a build issue in the IMAP extension under IRIX. (kalowsky)
  530. - Fixed a bug in imap_last_error() (Jani)
  531. - Various mbstring fixes. (Yasuo, Rui)
  532. - Fixed a build problem in the mcal extension. (Jani)
  533. - Made MySQL rollback open transactions when the request ends. (Georg)
  534. - Fixed a crash in the shutdown order of the ODBC module. (kalowsky)
  535. - Fixed PCRE build problems. (troels@arvin.dk)
  536. - Fixed a crash in pg_lo_write() (Yasuo)
  537. - Fixed posix_isatty() and posix_ttyname(). (Markus)
  538. - Fixed accidental pg_lo_import() API change. (Yasuo)
  539. - Fixed ereg_replace() crash when the backreference number was greater than the
  540. number of captured subpatterns. (oliver@billix.franken.de)
  541. - Fixed array_rand() on thread-safe platforms such as Windows. (Edin)
  542. - Report the right exit code after a call to exit(). (Edin)
  543. 22 Jul 2002, Version 4.2.2
  544. - Fixed serious security vulnerability. (Stefan Esser)
  545. 13 May 2002, Version 4.2.1
  546. - Added safe-mode checks to show_source(), parse_ini_file() and rmdir(). Also
  547. fixed security problems with safe_mode_include_dir directive. (Rasmus)
  548. - Changed HTTP upload code to accept 0 byte file uploads. (Zeev)
  549. - Major update of domxml. New functions, better DOM compliance and bug fixes:
  550. * Changed the old $node->append_child() to $node->append_sibling() since
  551. the new append_child() behaves correctly (= W3C standard).
  552. * Added domxml functions:
  553. . domxml_elem_get_elements_by_tagname()
  554. . domxml_doc_get_elements_by_tagname()
  555. . domxml_doc_get_element_by_id()
  556. . domxml_elem_remove_attribute()
  557. . domxml_elem_get_attribute_node()
  558. * Fixed a segfault in domxml_unlink().
  559. * Added formatting option to domxml_dump_mem().
  560. (Uwe, jtate, Chregu)
  561. - Fixed a bug in socket_select() that could cause unexpected behavior when
  562. using a statement like $w = $e = array($sock); This change unfortunately
  563. prevents the use of constant values (e.g. NULL) for the socket array
  564. paramaters. Instead, use a temporary variable or an expression with the
  565. leftmost member being a temporary variable. ex.:
  566. socket_select($w, $r, $e = NULL, 10); (Jason)
  567. - Fixed crashes in the session serializer. (Stas)
  568. - Fixed malformed atime/mtime with touch(). (Yasuo)
  569. - Fixed a couple of bugs in array_sum() and array_merge(). (Andrei)
  570. - Fixed SJIS directory name handling under Windows. (Rui)
  571. - Fixed empty mb_output_handler() output when Content-Type is specified.
  572. (Yasuo)
  573. - Fixed the false logic in ext/session which made SID constant not to be
  574. defined when cookies are disabled. (Sascha)
  575. - Fixed possible crash bug in HTTP uploads. (Patch: Lucas Schroeder)
  576. - Fixed possible NULL-pointer dereferencing in the COM extension which
  577. caused 'Error in php_OLECHAR_to_char()' warnings on various places.
  578. Also modified the API to consistently return NULL in case of an error.
  579. (Alan, Harald)
  580. - Fixed a bug in the COM extension that caused outproc servers to 'hang'
  581. because of a missing Release() call. (Alan, Harald)
  582. 22 Apr 2002, Version 4.2.0
  583. - ATTENTION!! register_globals defaults to 'off' now !!!
  584. - Note: Apache2 support is EXPERIMENTAL.
  585. - PostgreSQL functions are renamed, but all old function names are available.
  586. Old function names will be available long enough. User can safely use old
  587. function names. (Yasuo)
  588. - Moved ext/mailparse to PECL. See http://thebrainroom.com/opensource/php/
  589. for more information and to download the extension. (Wez/Jim)
  590. - Fixed pg_last_notice() crash. (Yasuo)
  591. - Modified the mysql extension to disable 'LOAD LOCAL' when safe mode is
  592. enabled. (Jason)
  593. - Added CLI (command line interface) sapi which is more suitable for writing
  594. shell scripts. Some of the differences to CGI sapi are: no HTTP headers,
  595. plain text error messages, does not change working directory, have a new -r
  596. option which executes a piece of PHP code directly from the commmand line, etc.
  597. (Edin)
  598. - Fixed HTTP file upload support to handle big files better. (Jani)
  599. - Major modifications to the Sockets Extension and its API (Jason):
  600. . Fixed numerous bugs.
  601. . Added automatic host lookup capability to all functions that take addr's.
  602. example: socket_connect($sock, 'www.yahoo.com', 80);
  603. . Corrected and standardized host lookup errors
  604. . Modified socket_recv() behavior. [$r=socket_recv($sock, $buf, $len, $flags)]
  605. . Added socket_set_block() which changes a socket into blocking IO mode
  606. . Modified socket_last_error() to not clear the last error
  607. . Added socket_clear_error() which clears the last error on a socket
  608. . Removed all code pertaining to fd_sets (socket_fd_*)
  609. . Modified/Improved socket_select() to accept array of resources instead of
  610. fd_sets. example:
  611. <?php
  612. $wfds=$rfds=array($sock1, $sock2, $sock3, $sock7);
  613. $r=socket_select($rfds, $wfds, NULL, 1);
  614. print "Ready to read:\n"; var_dump($rfds);
  615. ?>
  616. - Fixed segfault in ibase_close() if user does not free the resultset.
  617. Bugs #15419, #15992. (daniela)
  618. - Added optional 3rd parameter "int encoding_mode" to gzencode() and fixed
  619. parameters to conform documentation. (Stefan)
  620. - Changed read_exif_data() to be an alias of exif_read_data(). (Marcus)
  621. - Added exif_tagname() function which returns the names of tags and
  622. exif_thumbnail() function to extract embedded thumbnails. (Marcus)
  623. - Fixed iconv support with FreeBSD. (kalowsky)
  624. - Cleaned up the posix extension: (Markus)
  625. . Removed unwanted warning messages
  626. . Added posix_errno() and posix_strerror() for fetching error messages
  627. . Changed the way posix_getgrnam() and posix_getgrgid() return their values
  628. (breaks BC but makes more sense)
  629. . Does not include functions in symbol table which aren't supported on host
  630. system.
  631. - Added TIFF support for getimagesize() and read_exif_data(). (Marcus)
  632. - Changed the Velocis extension namespace to Birdstep to reflect new product
  633. name. Added aliases for BC. (James)
  634. - Added safe_mode checks for opendir(). (jflemer)
  635. - Changed the 2nd parameter in pgsql_fetch_*() functions to support NULL if
  636. all 3 parameters are supplied, but you do not want to provide a row number.
  637. (Derick)
  638. - Improved iconv() when using libc's iconv. (Yasuo)
  639. - Added PHP_SAPI constant which contains the name of running SAPI. (Edin)
  640. - Added ob_get_status() which returns an array of buffers with their status.
  641. (Yasuo)
  642. - Fixed a crash bug in ob_end_*() functions. ob_end_*() will not delete
  643. buffers that may not be deleted. (Yasuo)
  644. - Added 3rd parameter "bool erase" to ob_start(). If FALSE, the buffer may not
  645. be deleted until script finishes. (Yasuo)
  646. - Changed ob_*() functions to return TRUE for success, FALSE for failure.
  647. (Yasuo)
  648. - Added sybase_ct support to dbx module. (Marc)
  649. - Fixed error message handling with PostgreSQL 7.2. (Rui)
  650. - Added object aggregation capability, see aggregation_*() functions. (Andrei)
  651. - Added debug_zval_dump() which works similarly to var_dump, but displays
  652. extra internal information such as refcounts and true type names. (Jason)
  653. - Added Andrei's tokenizer extension. (Stig)
  654. - Fixed a bug in the COM extension which caused php to crash in
  655. php_COM_get_ids_of_names(). (Paul, Harald)
  656. - Removed ext/satellite. It is now part of PEAR. (eriksson)
  657. - Changed php.ini directive 'safe_mode_include_dir' to accept a (semi)colon
  658. separated path (like 'include_path') rather than a single directory.
  659. (jflemer)
  660. - Added is_a() function that can be used to test whether object is of a certain
  661. class or is derived from it. (Andrei, Zend Engine)
  662. - Added optional parameter to highlight_string() and highlight_file() which
  663. makes these functions to return a highlighted string instead of dumping
  664. it to standard output. (Derick)
  665. - Added EXTR_IF_EXISTS and EXTR_PREFIX_IF_EXISTS flags to extract(). (Rasmus)
  666. - Fixed a segfault in pg_pconnect(). If PostgreSQL server is restarted, broken
  667. connection is detected and reconnected. (Yasuo)
  668. - Fixed --enable-safe-mode configure option. (Yasuo)
  669. - Added function domxml_dump_node($doc,$node). Dumps a node plus all children
  670. into a string. (chregu)
  671. - Added function domxml_node_get_content(). (chregu)
  672. - Added function domxml_dump_file($filename,[$compression]). Dumps XML to
  673. a file and uses compression, if specified. (chregu)
  674. - Added exslt integration to domxml extension (http://exslt.org for details).
  675. Configure with --with-dom-exslt[=DIR] (and --with-dom-xslt).
  676. (chregu,jaroslaw)
  677. - Fixed session_unset() to not touch any globals if register_globals is off.
  678. (Thies)
  679. - Added 3 new optional parameters to OCIFetchStatement(). They control
  680. the number of rows to skip at the beginning of the cursor, the
  681. maximun numer of rows that should be fetched and the format of the
  682. returned array. (Thies)
  683. - Updated the XSLT extension to support Sablotron 0.8. (Petr Cimprich)
  684. - Fixed a bug in preg_match() and preg_match_all() when matching strings
  685. contain null bytes. (Andrei)
  686. - Added xpath_register_ns() function. This makes it possible to issue XPath
  687. queries with namespaces like for example: "//namespace:sampletag".
  688. (Chris Jarecki)
  689. - Added multi-byte enabled regular expression functions. (Rui)
  690. - Added optional second parameter to count() which can be used to specify
  691. either normal or recursive counting. (patch by Vlad Bosinceanu <glipy@fx.ro>)
  692. - Added mb_get_info() to get internal settings of mbstring. (Rui)
  693. - Added async query functions to PostgreSQL module. (Yasuo)
  694. - Added pg_copy_to()/pg_copy_from() for PostgreSQL module. (Youichi, Yasuo)
  695. - Added IPv6 support for FTP extension. (Stig Venaas)
  696. - Improved the speed of wordwrap() significantly. (Jim)
  697. - Fixed pow()'s incorrect behaviour when dealing with powers of 0. (Jim)
  698. - Added is_finite(), is_infinite() and is_nan(). (Jim)
  699. - Fixed segfault in wordwrap() when wrapping to zero width and using
  700. multi-character break or trying to force cut (bug #12768). (Jim)
  701. - Fixed several bugs in dbase extension (dbase_pack() truncate file to right
  702. size, fix 6852 #1 and 6852 #2). (Vlad)
  703. - Fixed bug in krsort() where an extra character was being compared. (Andi)
  704. - Fixed bug that made pspell include pspell.h from a wrong location. (Vlad)
  705. - Added function overload in mbstring to add multibyte support for
  706. string and mail functions. (Rui)
  707. - Added flags parameter to preg_grep(). The only flag currently is
  708. PREG_GREP_INVERT that will make the function return entries that
  709. did not match. (Andrei)
  710. - Fixed several crash bugs in the xslt extension. (Markus, Derick)
  711. - Fixed problem with dbase not returning very large (larger than long)
  712. integers properly. (Vlad)
  713. - Added concepts to IRCG: bailout-on-trivial issue, write output to
  714. files, fetch a resource upon connection end. (Sascha)
  715. - Fixed POST-related bugs in thttpd, added QUERY_STRING, HTTP_HOST,
  716. HTTP_ACCEPT_LANGUAGE to the script environment, improved patch
  717. to send correct MIME types, and added support for /nocache/. (Sascha)
  718. - Fixed several bugs and memleaks in the domxml extension. (Markus)
  719. - Added var_export() which outputs a representation of a variable as reusable
  720. PHP code. (Derick)
  721. - Added -w option to the CGI-version to strip all comments and whitespace
  722. from the script. (Thies)
  723. - Added support for SO_RCVTIMEO and SO_SNDTIMEO to ext/sockets. (Jason)
  724. - Added ob_get_level() which returns the nesting level of the output buffering
  725. mechanism. (Yasuo, Derick)
  726. - Added ob_flush() and ob_clean() functions which flush and clean an output
  727. buffer without destroying the buffer. (Derick)
  728. - Added new optional parameter to mysql_connect() which forces a new database
  729. link to be created. (Markus, Derick)
  730. - Added ldap_sort() function. (Stig Venaas)
  731. - Added md5_file() function which calculates the MD5 sum of a file.
  732. Patch by Alessandro Astarita <aleast@capri.it> (Derick)
  733. - Added support for parsing recordsets contained in WDDX packets. (Andrei)
  734. - Renamed key_exists() to array_key_exists(). (Derick)
  735. - Fixed ImageColorsForIndex() and ImageColorAt() to work for TrueColor
  736. images. (Rasmus)
  737. - Added support for bind_textdomain_codeset(). (rudib@email.si)
  738. - Added generic Win 32 API extension. (jmoore)
  739. - Removed warning message about NONEXISTENT character set from mysql_connect()
  740. when the server's default character set != latin1. (Mysql Team)
  741. - Added Direct I/O extension for lowlevel access to the POSIX layer. (Sterling)
  742. - Added SAPI module for the WebJames server on RISC OS. (Alex Waugh)
  743. - Fixed ldap_add() and ldap_modify() functions to throw a warning with illegal
  744. value arrays. Previously segfaulted or added wrong value. (Stig Venaas)
  745. - Added udm_check_charset() function into mnoGoSearch extension. (gluke)
  746. - Fixed mnoGoSearch extension to support mnogosearch-3.2.x. (gluke)
  747. - Made fbsql_num_rows() to return the correct value on all select statements.
  748. (Frank)
  749. - Added array_chunk() function which splits an array into chunks of specified
  750. size. (Andrei)
  751. - Fixed $HTTP_RAW_POST_DATA to be populated on a missing content-type when
  752. always_populate_raw_post_data is on. (Rasmus)
  753. - Added session_cache_expire() function. (patch by anuradha@gnu.org) (Andrei)
  754. - Added array_fill() function. (Rasmus)
  755. - Made Authorization header to be hidden from phpinfo() output in safe_mode.
  756. (Rasmus)
  757. - Re-instated safe-mode realm mangling. (Rasmus)
  758. - Fixed a bug in preg_replace() that would change the type of the replacement
  759. array entries to string. (Andrei)
  760. - Added user-space object overloading extension. (Andrei)
  761. - Added ldap_start_tls() function. (Stig Venaas, patch by kuenne@rentec.com)
  762. - Changed rand() and mt_rand() to be seed automatically if srand() or
  763. mt_srand() has not been called. (Sterling)
  764. - Changed the seed options to srand() and mt_srand() to be optional. If the
  765. seed is not specified the most random seed possible is generated. (Sterling)
  766. - Added array_change_key_case() function which returns an array with all
  767. string keys lowercased or uppercased. (Edin)
  768. - Added parameter to ircg_pconnect to suppress treating non-fatal errors
  769. as fatal, and added conversion of Windows quotes to &quot;. (Sascha)
  770. - Added pcntl_exec() function which behaves similar to the system execve.
  771. (Jason)
  772. - Fixed segfault and check for truecolor image in ImageColorAt(). (Rasmus)
  773. - Fixed nl2br() to handle all styles of line-endings in one string.
  774. (Boian, Derick)
  775. - Added mcrypt_generic_deinit() to replace mcrypt_generic_end(). (Derick)
  776. - Added apache_setenv() function for injecting variables into Apache's
  777. subprocess_env table. (Rasmus)
  778. - Added support for 'int', 'bool', 'float' and 'null' in settype(). (Jeroen)
  779. - Added IPv6 support to gethostbyaddr().
  780. (Patch by Matthias Wimmer <matthias@charente.de> and venaas)
  781. - Fixed LONG_VARCHAR type crashing in ODBC extension. Patch by Walter Franzini.
  782. (kalowsky)
  783. - Changed in_array() and search_array() to allow the needle to be an array
  784. in itself. (Andrei)
  785. - Added ini_get_all() function which returns all registered ini entries
  786. or entries for the specified extension. (Jani)
  787. - Added mailparse_uudecode_all() which extracts all uuencoded attachments.
  788. (Wez)
  789. - Added support for chinese encodings in htmlentities() and htmlspecialchars().
  790. (Patch by Alan Knowles <alan_k@hklc.com> and Wez)
  791. - Improved support for autoconf-2.50+/libtool 1.4b+. (Jan Kneschke, Sascha)
  792. 27 Feb 2002, Version 4.1.2
  793. - Fixed start up failure when mm save handler is used and there are multiple
  794. SAPIs working at the same time. (Yasuo)
  795. - Fixed the Roxen SAPI. (Yasuo)
  796. - Fixed a buffer overflow in the RFC-1867 file upload code. (Stefan)
  797. - Fixed a crash bug in the session module. (Yasuo)
  798. - Fixed a crash bug in the pspell module. (Yasuo)
  799. - Changed the default output encoding of mbstring 'pass' to fix
  800. initialization problem. (Rui)
  801. 26 Dec 2001, Version 4.1.1
  802. - Fixed incompatibility with Windows .NET / IIS 6 - may improve stability
  803. under other versions of IIS. (Zeev)
  804. - Fixed bug that caused crashes or error notices on shutdown on threaded
  805. platforms. (Zeev)
  806. - Fixed several crash bugs in the xslt extension. (Markus, Derick)
  807. - Fixed problem with dbase not returning very large (larger than long)
  808. integers properly. (Vlad)
  809. - Fixed several bugs and memleaks in the domxml extension. (Markus)
  810. - Fixed bug in gmmktime() which was one hour off during standard time -
  811. bug #9878. Patch by bfoddy@mediaone.net. (jmoore)
  812. - Fixed bug in gmdate() timezone handling on Windows - bug #13885. (jmoore)
  813. - Fixed several crash bugs in the mcrypt extension. (Derick)
  814. - Made the mcrypt extension compile with the libmcrypt 2.2 series again.
  815. (Sterling)
  816. - Fixed a bug where the is_file() family of functions would in-correctly give
  817. an error when they were given filenames that didn't exist. (Sterling)
  818. - Fixed a bug in the strtotime() function where it was incorrectly recognizing
  819. GMT +0100 and GMT -0100. (Derick)
  820. 10 Dec 2001, Version 4.1.0
  821. - Fixed return values for strtok (Bug #13866) (jmoore)
  822. - Worked around a bug in the MySQL client library that could cause PHP to hang
  823. when using unbuffered queries. (Zeev)
  824. - Fixed a bug which caused set_time_limit() to affect all subsequent requests
  825. to running Apache child process. (Zeev)
  826. - Removed the sablotron extension in favor of the new XSLT extension.
  827. (Sterling)
  828. - Fixed a bug in WDDX deserialization that would sometimes corrupt the root
  829. element if it was a scalar one. (Andrei)
  830. - Make ImageColorAt() and ImageColorsForIndex() work with TrueColor images.
  831. (Rasmus)
  832. - Fixed a bug in preg_match_all() that would return results under improper
  833. indices in certain cases. (Andrei)
  834. - Fixed a crash in str_replace() that would happen if search parameter was an
  835. array and one of the replacements resulted in subject string being empty.
  836. (Andrei)
  837. - Fixed MySQL extension to work with MySQL 4.0. (Jani)
  838. - Fixed a crash bug within Cobalt systems. Patch by tomc@tripac.com. (Jani)
  839. - Bundled Dan Libby's xmlrpc-epi extension.
  840. - Introduced extension version numbers. (Stig)
  841. - Added version_compare() function. (Stig)
  842. - Fixed pg_last_notice() (could cause random crashes in PostgreSQL
  843. applications, even if they didn't use pg_last_notice()). (Zeev)
  844. - Fixed DOM-XML's error reporting, so E_WARNING errors are given instead of
  845. E_ERROR error's, this allows you to trap errors thrown by DOMXML functions.
  846. (Sterling)
  847. - Fixed a bug in the mcrypt extension, where list destructors were not
  848. properly being allocated. (Sterling)
  849. - Better Interbase blob, null and error handling. (Patch by Jeremy Bettis)
  850. - Fixed a crash bug in array_map() if the input arrays had string or
  851. non-sequential keys. Also modified it so that if a single array is passed,
  852. its keys are preserved in the resulting array. (Andrei)
  853. - Fixed a crash in dbase_replace_record. (Patch by robin.marlow@dps-int.com)
  854. - Fixed a crash in msql_result(). (Zeev)
  855. - Added support for single dimensional SafeArrays and Enumerations.
  856. Added com_isenum() function to check if a component implements an
  857. enumeration. (Alan, Harald)
  858. - Fixed a bug in dbase_get_record() and dbase_get_record_with_names().
  859. boolean fields are now returned correctly.
  860. Patch by Lawrence E. Widman <widman@cardiothink.com> (Jani)
  861. - Added --version option to php-config. (Stig)
  862. - Improved support for thttpd-2.21b by incorporating patches for all known
  863. bugs. (Sascha)
  864. - Added ircg_get_username, a roomkey argument to ircg_join, error fetching
  865. infrastructure, a tokenizer to speed up message processing, and fixed
  866. a lot of bugs in the IRCG extension. (Sascha)
  867. - Improved speed of the serializer/deserializer. (Thies, Sascha)
  868. - Floating point numbers are better detected when converting from strings.
  869. (Zeev, Zend Engine)
  870. - Replaced php.ini-optimized with php.ini-recommended. As the name implies,
  871. it's warmly recommended to use this file as the basis for your PHP
  872. configuration, rather than php.ini-dist. (Zeev)
  873. - Restore xpath_eval() and php_xpathptr_eval() for 4.0.7. There
  874. are still some known leaks. (Joey)
  875. - Added import_request_variables(), to allow users to safely import form
  876. variables to the global scope (Zeev)
  877. - Introduced a new $_REQUEST array, which includes any GET, POST or COOKIE
  878. variables. Like the other new variables, this variable is also available
  879. regardless of the context. (Andi & Zeev)
  880. - Introduced $_GET, $_POST, $_COOKIE, $_SERVER and $_ENV variables, which
  881. deprecate the old $HTTP_*_VARS arrays. In addition to be much shorter to
  882. type - these variables are also available regardless of the scope, and
  883. there's no need to import them using the 'global' statement. (Andi & Zeev)
  884. - Added vprintf() and vsprintf() functions that allow passing all arguments
  885. after format as an array. (Andrei)
  886. - Added support for GD2 image type for ImageCreateFromString(). (Jani)
  887. - Added ImageCreateFromGD(), ImageCreateFromGD2(), ImageCreateFromGD2part(),
  888. ImageGD() and ImageGD2() functions. (Jani)
  889. - addcslashes now warns when charlist is invalid. The returned string
  890. remained the same (Jeroen)
  891. - Added optional extra argument to gmp_init(). The extra argument
  892. indicates which number base gmp should use when converting a
  893. string to the gmp-number. (Troels)
  894. - Added the Cyrus-IMAP extension, which allows a direct interface to Cyrus'
  895. more advanced capabilities. (Sterling)
  896. - Enhanced read_exif_data() to support multiple comment tags. (Rasmus)
  897. - Fixed a crash bug in array_map() when NULL callback was passed in. (Andrei)
  898. - Change from E_ERROR to E_WARNING in the exif extension (Rasmus)
  899. - New pow() implementation, which returns an integer when possible,
  900. and warnings on wrong input (jeroen)
  901. - Added optional second parameter to trim, chop and ltrim. You can
  902. now specify which characters to trim (jeroen)
  903. - Hugely improved the performance of the thread-safe version of PHP, especially
  904. under Windows (Andi & Zeev)
  905. - Improved request-shutdown performance significantly (Andi & Zeev, Zend
  906. Engine)
  907. - Added a few new math functions. (Jesus)
  908. - Bump bundled expat to 1.95.2 (Thies)
  909. - Improved the stability of OCIPlogon() after a database restart. (Thies)
  910. - Fixed __FILE__ in the CGI & Java servlet modes when used in the main script.
  911. It only worked correctly in included files before this fix (Andi)
  912. - Improved the Zend hash table implementation to be much faster (Andi, Zend
  913. Engine)
  914. - Updated PHP's file open function (used by include()) to check in the calling
  915. script's directory in case the file can't be found in the include_path (Andi)
  916. - Fixed a corruption bug that could cause constants to become corrupted, and
  917. possibly prevent resources from properly being cleaned up at the end of
  918. a request (Zeev)
  919. - Added optional use of Boyer-Moore algorithm to str_replace() (Sascha)
  920. - Fixed and improved shared-memory session storage module (Sascha)
  921. - Add config option (always_populate_raw_post_data) which when enabled
  922. will always populate $HTTP_RAW_POST_DATA regardless of the post mime
  923. type (Rasmus)
  924. - Added support for socket and popen file types to ftp_fput (Jason)
  925. - Fixed various memory leaks in the LDAP extension (Stig Venaas)
  926. - Improved interactive mode - it is now available in all builds of PHP, without
  927. any significant slowdown (Zeev, Zend Engine)
  928. - Fixed crash in iptcparse() if the supplied data was bogus. (Thies)
  929. - Fixed return value for a failed snmpset() - now returns false (Rasmus)
  930. - Added hostname:port support to snmp functions (nbougues@axialys.net, Rasmus)
  931. - Added fdf_set_encoding() function (Masaki YATSU, Rasmus)
  932. - Reversed the destruction-order of resources. This fixes the reported OCI8
  933. "failed to rollback outstanding transactions!" message (Thies, Zend Engine)
  934. - Added option for returning XMLRPC fault packets. (Matt Allen, Sascha
  935. Schumann)
  936. - Improved range() function to support range('a','z') and range(9,0) types of
  937. ranges. (Rasmus)
  938. - Added getmygid() and safe_mode_gid ini directive to allow safe mode to do
  939. a gid check instead of a uid check. (James E. Flemer, Rasmus)
  940. - Made assert() accept the array(&$obj, 'methodname') syntax. (Thies)
  941. - Made sure that OCI8 outbound variables are always zero-terminated. (Thies)
  942. - Fixed a bug that allowed users to spawn processes while using the 5th
  943. parameter to mail(). (Derick)
  944. - Added nl_langinfo() (when OS provides it) that returns locale.
  945. - Fixed a major memory corruption bug in the thread safe version. (Zeev)
  946. - Fixed a crash when using the CURLOPT_WRITEHEADER option. (Sterling)
  947. - Added optional suffix removal parameter to basename(). (Hartmut)
  948. - Added new parameter UDM_PARAM_VARDIR ha in Udm_Set_Agent_Param() function to
  949. support alternative search data directory. This requires mnogoSearch 3.1.13
  950. or later.
  951. - Fixed references in sessions. This doesn't work when using the WDDX
  952. session-serializer. Also improved speed of sessions. (Thies)
  953. - Added new experimental module pcntl (Process Control). (Jason)
  954. - Fixed a bug when com.allow_dcom is set to false. (phanto)
  955. - Added a further parameter to the constructor to load typelibs from file when
  956. instantiating components (e.g. DCOM Components without local registration).
  957. (phanto)
  958. - Added the possibility to specify typelibs by full name in the typelib file
  959. (Alan Brown)
  960. - Renamed the ZZiplib extension to the Zip extension, function names have also
  961. changed accordingly, functionality, has stayed constant. (Sterling)
  962. - Made the length argument (argument 2) to pg_loread() optional, if not
  963. specified data will be read in 1kb chunks. (Sterling)
  964. - Added a third argument to pg_lowrite() which is the length of the data to
  965. write. (Sterling)
  966. - Added the CONNECTION_ABORTED, CONNECTION_TIMEOUT and CONNECTION_NORMAL
  967. constants. (Zak)
  968. - Assigning to a string offset beyond the end of the string now automatically
  969. increases the string length by padding it with spaces, and performs the
  970. assignment. (Zeev, Zend Engine)
  971. - Added warnings in case an uninitialized string offset is read. (Zeev, Zend
  972. Engine)
  973. - Fixed a couple of overflow bugs in case of very large negative integer
  974. numbers. (Zeev, Zend Engine)
  975. - Fixed a crash bug in the string-offsets implementation (Zeev, Zend Engine)
  976. - Improved the implementation of parent::method_name() for classes which use
  977. run-time inheritance. (Zeev, Zend Engine)
  978. - Added 'W' flag to date() function to return week number of year using ISO
  979. 8601 standard. (Colin)
  980. - Made the PostgreSQL driver do internal row counting when iterating through
  981. result sets. (gvz@2scale.net)
  982. - Updated ext/mysql/libmysql to version 3.23.39; Portability fixes, minor
  983. bug fixes. (tim@mysql.com)
  984. - Added get_defined_constants() function to return an associative array of
  985. constants mapped to their values. (Sean)
  986. - New mailparse extension for parsing and manipulating MIME mail. (Wez)
  987. - Define HAVE_CONFIG_H when building standalone DSO extensions. (Stig)
  988. - Added the 'u' modifier to printf/sprintf which prints unsigned longs.
  989. (Derick)
  990. - Improved IRIX compatibility. (Sascha)
  991. - Fixed crash bug in bzopen() when specifying an invalid file. (Andi)
  992. - Fixed bugs in the mcrypt extension that caused crashes. (Derick)
  993. - Added the IMG_ARC_ROUNDED option for the ImageFilledArc() function, which
  994. specified that the drawn curve should be rounded. (Sterling)
  995. - Updated the sockets extension to use resources instead of longs for the
  996. socket descriptors. The socket functions have been renamed to conform with
  997. the PHP standard instead of their C counterparts. The sockets extension is
  998. now usable under Win32. (Daniel)
  999. - Added disk_total_space() to return the total size of a filesystem.
  1000. (Patch from Steven Bower)
  1001. - Renamed diskfreespace() to disk_free_space() to conform to established
  1002. naming conventions. (Jon)
  1003. - Fixed #2181. Now zero is returned instead of an unset value for
  1004. 7-bit encoding and plain text body type. (Vlad)
  1005. - Fixed a bug in call_user_*() functions that would not allow calling
  1006. functions/methods that accepted parameters by reference. (Andrei)
  1007. - Added com_release($obj) and com_addref($obj) functions and the related class
  1008. members $obj->Release() and $obj->AddRef() to gain more control over the used
  1009. COM components. (phanto)
  1010. - Added an additional parameter to dotnet_load to specify the codepage (phanto)
  1011. - Added peak memory logging. Use --enable-memory-limit to create a new Apache
  1012. 1.x logging directive "{mod_php_memory_usage}n" which will log the peak
  1013. amount of memory used by the script. (Thies)
  1014. - Made fstat() and stat() provide identical output by returning a numerical and
  1015. string indexed array. (Jason)
  1016. - Fixed memory leak upon re-registering constants. (Sascha, Zend Engine)
  1017. 23 Jun 2001, Version 4.0.6
  1018. - Fixed memory fragmention problem which could lead to web server processes
  1019. growing much more than they should. (Andi, Zend Engine)
  1020. - Made $HTTP_SESSION_VARS['foo'] and $foo be references to the same value
  1021. when register_globals is on. (Andrei)
  1022. - Fixed disk_free_space() and disk_total_space() under FreeBSD. (Jon)
  1023. - Fixed readfile/passthru losing resources during connection abort (Sascha)
  1024. - Fixed bug in the mcrypt extension that caused segfaults when using a key
  1025. that is too large for the used algorithm, and a bug that caused
  1026. mcrypt_generic() to segfault PHP (Derick)
  1027. - Fixed getopt so that it accepts command line arguments in the form
  1028. -<opt><arg> and -<opt> <arg>. (Jmoore)
  1029. - Fixed race in writing session files (Sascha)
  1030. - Fixed a possible crash in the PHP CGI when no input file is
  1031. specified (Zeev)
  1032. - Added is_callable() function that can be used to find out whether
  1033. its argument is a valid callable construct. (Andrei)
  1034. - Fixed a rare possible crash when generating extended information. (Dmitri
  1035. Dmitrienko, Zend Engine)
  1036. - Improved virtual() to support PHP-enabled URIs. (Zeev)
  1037. - Fixed undefined behavior when using floating point keys in array()
  1038. expressions. (Zeev, Zend Engine)
  1039. - Fixed a possible crash in case of parse errors in include files or eval
  1040. statements. (Zeev, Zend Engine)
  1041. - Added --with-layout configure option. (Stig)
  1042. - Improved interactive mode - supports function calls, and works in
  1043. multithreaded builds. (Zeev, Zend Engine)
  1044. - Fixed a crash bug in interactive mode. (Zeev, Zend Engine)
  1045. - Added pg_last_notice() function. (Rasmus from suggestion by Dirk@rackspace.com)
  1046. - Fixed a bug in preg_split() that would incorrectly limit the number of
  1047. results when used along with PREG_SPLIT_NO_EMPTY flag. (Andrei)
  1048. - Added connection error support to mysql_error() and mysql_errno(). (Jason)
  1049. - Added support to getimagesize to return dimensions of BMP and PSD
  1050. files. (Derick)
  1051. - Added heuristic to kill stale IRC connections, message scanner caching, and
  1052. nickname escaping to IRCG, suppress option to ircg_msg(), and statistics to
  1053. IRCG phpinfo() output. (Sascha)
  1054. - Added Japanese multibyte string functions support. (Rui)
  1055. - Added Mac OS X "\r" line ending support. (Andi, Zend Engine)
  1056. - Fixed a bug regarding the $PHP_SELF being incorrectly registered when
  1057. force-cgi-redirect was not enabled. (Sterling)
  1058. - pfpro extension now supports version 3 of the Verisign SDK. (John Donagher)
  1059. - Udm_Cat_List and Udm_Cat_Path functions has been added.
  1060. - Added key_exists() to check if a given key or index exists in an
  1061. array or object. (David Croft)
  1062. - Modify the cURL extension to compile only with the latest cURL release.
  1063. Backwards compatibility with regards to the extension api has not been
  1064. broken. (Sterling)
  1065. - Added the ability to use user-defined callbacks with cURL. (Sterling)
  1066. - Added the SSL_VERIFYPEER, CAINFO, MAXREDIRS, FILETIME, RANDOM_FILE, EGDSOCKET
  1067. and CONNECTTIMEOUT options to curl_setopt(). (Sterling)
  1068. - Added support for persistent connections with cURL. (Sterling)
  1069. - Fixed a problem in cURL with file descriptors being allocated, but never
  1070. closed. (Sterling)
  1071. - Fixed interactive mode (-a). It works again with the same limitations it
  1072. has always had. (Andi, Zend Engine)
  1073. - Improved memory manager to use less memory and provide better memory overflow
  1074. detection abilities in debug mode. (Andi, Zend Engine)
  1075. - Fixed resource leaks when resources were being cast to numbers. (Zeev, Zend
  1076. Engine)
  1077. - Fixed foreach() to not crash when being sent an invalid argument. (Andi, Zend
  1078. Engine)
  1079. - Fixed a bug in opendir() under Windows when trying to open a non-exisiting
  1080. directory. (Andi)
  1081. - Fixed popen() and the exec family under Win32 (Unable to fork issue). (Daniel)
  1082. - Make the printf family of functions binary clean. (Rasmus)
  1083. - Fixed WDDX serialization to HTML-escape key/variable names so as not to
  1084. break the XML packet. (Andrei)
  1085. - Made WDDX extension enabled by default. (Andrei)
  1086. - Added -C command-line option to avoid chdir to the script's directory. (Stig)
  1087. - Fixed a bug with /e modifier in preg_replace(), that would not correctly
  1088. replace two-digit references if single digit references were present
  1089. before them. This fixed bug #10218. (Andrei)
  1090. - Added temporary LOB support in OCI8. (Patch by David Benson)
  1091. - Fixed crash in pathinfo()
  1092. - OCI8 now supports binding of collections. (Patch by Andy Sautins
  1093. <asautins@veripost.net>)
  1094. - Added GD 2.0.1 support for truecolor and alpha channels, plus some other gd
  1095. functions, both old and new - see docs for more info. (Wez)
  1096. - Added S/MIME sign/verify encrypt/decrypt functions to openssl extension,
  1097. along with some other certificate manipulation and interrogation functions.
  1098. See docs for more info. (Wez)
  1099. - printf argnum (parameter swapping) support. (Morten Poulsen, Rasmus)
  1100. - Add DIRECTORY_SEPARATOR constant ('/' on UNIX, '\' on Windows). (Stig)
  1101. - Added small change to php_odbc module, to check for failed SQLDisconnects
  1102. and to close any outstanding transactions if the call fails, then disconnect
  1103. again. (lurcher)
  1104. - Modified get_parent_class() and get_class_methods() to accept a class name as
  1105. well as a class instance. (Andrei, Zend Engine)
  1106. - Added support for UNC style paths. (\\server\share\file,
  1107. //server/share/file). (Daniel, TSRM)
  1108. - Added dbx module (database abstraction) to the repository. (Marc)
  1109. - Using ITypeInfo instead of IDispatch if possible. This makes DCOM calls
  1110. and even COM calls much faster.
  1111. All ini settings are now prefixed by 'com.'.
  1112. Now you need not provide a path to the file containing the typelib, you can
  1113. also provide the GUID of the TypeLib - entry or an IID for preloading
  1114. type - information. (Harald)
  1115. - Rewrite of domxml. It's now mostly DOM Level 2 conform. (Uwe)
  1116. - Added array_map() function that applies a callback to the elements
  1117. of given arrays and returns the result. It can also be used with a
  1118. null callback to transpose arrays. (Andrei)
  1119. - Added array_filter(), which allows filtering of array elements via
  1120. the specified callback. (Andrei)
  1121. - Fixed all relevant array functions to avoid moving the internal array
  1122. pointer during operations. (Andrei)
  1123. - Added mysql_unbuffered_query(), which is useful for very large result sets.
  1124. (Zeev)
  1125. 30 Apr 2001, Version 4.0.5
  1126. - Added new php.ini directive: arg_separator.input which is used to tell
  1127. PHP which characters are considered as argument separators in URLs.
  1128. Renamed php.ini directive: arg_separator -> arg_separator.output (Jani)
  1129. - Added FastCGI SAPI module. (Ben Mansell)
  1130. - Added array_reduce(), which allows iterative reduction of an array
  1131. to a single value via a callback function. (Andrei)
  1132. - The imageloadfont function of the gd extension should be not platform
  1133. dependent after this fix. (alex@zend.com)
  1134. - Fixed a compatibility problem in some file functions (fgets, fputs, fread,
  1135. fwrite). The ANSI standard says that if a file is opened in read/write
  1136. mode, fseek() should be called before switching from reading to writing
  1137. and vice versa. (alex@zend.com)
  1138. - Fixed argument checking for call_user_func* functions and allowed
  1139. specifying array($obj, 'method') syntax for call_user_func_array. (Andrei)
  1140. - Fixed parent::method() to also work with runtime bindings.
  1141. (Zeev, Zend Engine)
  1142. - Implemented high-performance zlib-based output compression - see
  1143. zlib.output_compression INI directive. (Zeev)
  1144. - Improved ob_gzhandler() to support chunked output buffering - it's
  1145. recommended to use it with 4KB chunks. (Zeev)
  1146. - Fixed chunked output buffering. (Zeev)
  1147. - Forced call_user_method() and call_user_method_array() to take the
  1148. object argument by reference. (Andrei)
  1149. - Fixed binding of ROWIDs in OCI8. (Thies)
  1150. - Added PEAR/Cache as a generic Caching System. (Sebastian, PEAR/Cache)
  1151. - Added IMAP quota support (imap_set_quota, imap_get_quota), enabled/added via
  1152. c-client2000. (kalowsky)
  1153. - Upgraded PCRE to version 3.4. (Andrei)
  1154. - Added array_search which works similar to in_array but returns
  1155. the key instead of a boolean. (jason@php.net)
  1156. - Fixed pgsql transaction support. (Stig, PEAR/DB)
  1157. - Added new object VARIANT() to encapsulate values for use with
  1158. the COM and DOTNET module. Therefore it is now possible to pass
  1159. values by reference, convert php values to extended variant types (currency,
  1160. date, idispatch, iunknown, ...) and define the codepage that should
  1161. be used for unicode - conversion.
  1162. - Improved overall speed of IRCG, added URL handling to message scanner.
  1163. (Sascha)
  1164. - Fixed some modules to allow using output-buffering. (Thies)
  1165. - Added the chroot() function. (Derick)
  1166. - PostgreSQL now does a rollback at the end of a request on every
  1167. persistent connection. This is done by doing an "empty" transaction
  1168. on the connection. This was advised by someone from the PostgreSQL
  1169. core-team. (Thies)
  1170. - Fixed PostgeSQL pg_connect() bug. We would sometimes close the default
  1171. link by accident. (Patch by: aja@nlgroup.ca)
  1172. - Improved OCI8 dead-session detection. (Patch by: George Schlossnagle)
  1173. - Fixed get_meta_tags() multiline bug #4556. (Sean)
  1174. - Prefer random() over *rand48(). (JimJag)
  1175. - Sped up WDDX serialization 2x. (Andrei)
  1176. - Added a new parameter to mail() which appends aditional command line
  1177. parameters to the mail program. (Derick)
  1178. - Added Udm_Clear_Search_Limits mnoGoSearch extension function. (gluke)
  1179. - Fixed mnogosearch protos. Fixed mnogosearch functions return values.
  1180. A bug with capital letters break search has been fixed. (gluke)
  1181. - Static methods can now be called via call_user_method_* functions, e.g.
  1182. call_user_method('method', 'class'), and also array('class', 'method')
  1183. constructs (for array_walk(), for example). (Andrei, Zend Engine)
  1184. - microtime() under Windows now returns accurate values. (James)
  1185. - Added PREG_SPLIT_DELIM_CAPTURE flag to preg_split() that allows for Perl-like
  1186. functionality of capturing parenthesized delimiter expression. (Andrei)
  1187. - Fixed strip_tags() to not strip a lone > character. (Rasmus)
  1188. - When using the ob_gzhandler() PHP now automagically also sets the
  1189. Content-Lengh correctly which enables browsers to use the HTTP
  1190. Keep-Alive feature. (Thies)
  1191. - Improved handling of preg_replace() /F modifier so that it's possible to
  1192. specify array($obj, 'method') construct as a replacement function. (Andrei)
  1193. - Added mysql_get_client_info(), mysql_get_server_info(),
  1194. mysql_get_proto_info(), and mysql_get_host_info() functions. (Sean)
  1195. - Major change of the php pdf api. It could break some functions though
  1196. backwards compatibility was tried to maintain. Adding some still
  1197. missing functions as well. (Uwe)
  1198. - Added mnoGoSearch extension - http://search.mnogo.ru. (Sergey K)
  1199. - Allow URL encoding in DB usernames and passwords. (Stig, PEAR)
  1200. - Added raiseError and setErrorHandling methods to PEAR class. (Stig, PEAR)
  1201. - Added support for converting images from JPG/PNG on the fly with the GD
  1202. extension, which is usefull for creating dynamic WAP-sites. (Derick)
  1203. - Updated ext/mysql/libmysql to version 3.23.32; bug fixes. (tim@mysql.com)
  1204. - Fixed possible crash in all (non-pcre) regex functions. (Thies)
  1205. - Improved str_replace() to accept an array for any parameter - similar
  1206. to preg_replace(). (Andrei)
  1207. - Fixed extract() to properly prefix numeric keys when EXTR_PREFIX_ALL is
  1208. used. (Andrei)
  1209. - Added EXTR_PREFIX_INVALID flag to extract() to automatically prefix
  1210. string keys that do not constitute valid variable names. (Andrei)
  1211. - BeOS patch from svanegmond@bang.dhs.org, modified somewhat by Rasmus.
  1212. - Fixed the Apache module to overwrite PATH_TRANSLATED with SCRIPT_FILENAME,
  1213. only if PATH_TRANSLATED is not previously set. (Zeev)
  1214. - Fixed crash bug in highlight_string(). (Rasmus)
  1215. - Added URL support for getimagesize() function. (Jani)
  1216. - Added xslt_set_scheme_handler() function. (carmelo@akooe.com)
  1217. - Added the pg_lolseek and pg_lotell functions. (Derick)
  1218. - Fixed wrong breaking with the wordwrap function. (Derick)
  1219. - Fixed 'O' and 'r' flags of date() to have correct sign for timezone
  1220. offset. (Andrei)
  1221. - Changed 'Z' flag to date() to always return timezone offset with
  1222. negative sign if it's west of UTC. (Andrei)
  1223. - Added the HTML_Processor class which provides common functions for
  1224. processing HTML. (Sterling)
  1225. - Added localeconv() and strcoll() functions for localization. (Sean)
  1226. - Added the xslt_set_base function. (Sterling)
  1227. - Added support for Zeus 3.3.8.
  1228. - Added odbc_error() and odbc_errormsg() functions. (Stig)
  1229. - New extension for vpopmail - http://www.inter7.com/vpopmail,
  1230. give it a try, but keep in mind that it is not ready for production
  1231. environments. (David Croft, Boian Bonev)
  1232. - Added sybase_get_last_message() to the Sybase CT module. (Jan Fedak)
  1233. - Made ldap_list(), ldap_read() and ldap_search() do parallel search when
  1234. first parameter is an array of link identifiers. (Stig Venaas)
  1235. - Made fopen() of HTTP URL follow redirects, $http_response_header will
  1236. contain all headers with empty string as delimiter. (Stig Venaas)
  1237. - Added Console_Getopt class for parsing command-line args. (Andrei, PEAR)
  1238. - Added an experimental version of the ZZipLib extension which provides the
  1239. ability to read zip files. (Sterling)
  1240. - Allow access to uploaded files in safe_mode. Beware that you can only
  1241. read the file. If you copy it to new location the copy will not have the
  1242. right UID and you script won't be able to access that copy. (Thies)
  1243. - Changed extract() to check that prefixed name is a valid one. (Andrei)
  1244. - Changed extract() to return the number of variables extracted. (Andrei)
  1245. - Added ldap_rename() function. (Stig Venaas)
  1246. - Made ldap_set_option() support controls. (Stig Venaas)
  1247. - Changed ldap_search() and added functions ldap_parse_result(),
  1248. ldap_first_reference(), ldap_next_reference() and ldap_parse_reference()
  1249. to cope with LDAPv3 stuff like referrals and references. (Stig Venaas)
  1250. - Fixed date('r') overflow.
  1251. - Made the php.ini path reported in phpinfo() always point to the absolute
  1252. path that was opened. (Zeev)
  1253. - Made the INI mechanism thread safe. (Zeev, Zend Engine)
  1254. - Changed setlocale() to use LC_* constants. (Jani)
  1255. - ctype functions now follow the extension naming conventions. (Hartmut)
  1256. - Added iconv() function (using libc or libiconv). (Stig)
  1257. - Added ODBC_TYPE constant. (Stig)
  1258. - Added the call_user_method_array function which allows you to call a method
  1259. with an arbitrary number of parameters. (Sterling)
  1260. - ext/odbc: IBM DB2 patch by Walter Franzini. <walter@sys-net.it>
  1261. - Added extension for the cracklib library. (Alexander Feldman)
  1262. 19 Dec. 2000, Version 4.0.4
  1263. - Allow assigning a newly created object by reference. This is needed only if
  1264. your constructor makes other data structures reference the $this object (for
  1265. example, $GLOBALS["foobar"] =& $this;)
  1266. The new syntax is $obj =& new MyClass(); (Andi, Zend Engine)
  1267. - Allow for three expression types to be sent to functions which are requesting
  1268. the function argument to be passed by reference (only c. was previously
  1269. supported):
  1270. a. func(new myclass());
  1271. b. func(func2()); where func2() returns a reference, i.e. is defined as
  1272. function &func2(...)
  1273. {
  1274. ...
  1275. }
  1276. c. func($var); where func() is defined as function func(&$var) {...}
  1277. You CAN'T count on any other expressions to be passable by reference.
  1278. (Andi, Zend Engine)
  1279. - Made ldap_get_entries() return an array even if there are no entries
  1280. in search result. (Jani)
  1281. - Fixed bad mod_perl interaction which caused segfaults when using LFS (Sascha)
  1282. - const CONSTNAME now gets recognized. Before the patch only @const CONSTNAME
  1283. description was recognized.
  1284. - Added the is_null() function that will return true if a variable is of
  1285. type null. (Sterling)
  1286. - Fixed a bug which made readdir() unusable in some systems. (Jani)
  1287. - Added the get_defined_functions() function which returns a list of all
  1288. currently defined functions. (Sterling)
  1289. - Added the get_defined_vars() function which returns an associative array
  1290. of all variables defined in the current scope and their subsequent values.
  1291. (Sterling)
  1292. - Added the call_user_func_array() function which gives you the ability to
  1293. call a user function by passing an array of parameters as the second
  1294. argument. (Sterling)
  1295. - Added the constant() function which returns the value of a constant given
  1296. the constant's name. (Sterling)
  1297. - Implemented support for Perl-style matching regexp delimiters in PCRE.
  1298. You can use <{[( and )]}> to delimit your expressions now. (Andrei)
  1299. - Introduced new 'F' modifier in PCRE that lets you specify a function
  1300. name in the replacement argument to preg_replace() that will be called
  1301. at run-time to provide the replacement string. It is passed an array of
  1302. matched pattern and subpatterns. (Andrei)
  1303. - Put an end to BUG#4615 (kalowsky & Eric Veldhuyzen)
  1304. - Added the IRCG extension (Sascha)
  1305. - Fixed realpath() in Virtual Directory mode (Daniel)
  1306. - Integrated the Phil Nelson's bc math library routines into PHP, now that
  1307. the license allows it (Phil Nelson <phil@cs.wwu.edu>)
  1308. - Added the xslt_set_error_handler() function to the Sablotron extension.
  1309. (Sterling)
  1310. - Improved Sablotron's error handling system allowing you to catch all
  1311. errors before they are outputted to the screen. (Sterling)
  1312. - Added OpenSSL extension (Stig Venaas)
  1313. - Fixed/created support for Solid 3.0 databases (kalowsky)
  1314. - Fixed support for Solid 2.3 databases (kalowsky)
  1315. - quoted_printable_decode() function is made RFC-2045 compliant. (Kir)
  1316. - Modified preg_grep() to always return the results with keys from the original
  1317. array. (Andrei)
  1318. - Modified preg_replace() to accept Perl-style $n backreferences in addition
  1319. to \\n ones. (Andrei)
  1320. - Modified preg_replace() to ignore backreferences that refer to
  1321. non-existing subpatterns. (Andrei)
  1322. - Fixed column-title buffer-overflow in OCIFetchStatement(). (Thies)
  1323. - Added 'output_handler' INI directive (Zeev)
  1324. - Fixed some buglets in the output buffering mechanism (Zeev)
  1325. - Added transparent gzip compression support (Jade Nicoletti, Zeev)
  1326. - Major overhaul of domxml. Added basic XPath support as well (Uwe)
  1327. - Added 'r' flag to date() which generates an RFC822 formatted date, e.g.
  1328. "Thu, 9 Nov 2000 16:33:01 -0500" (Colin)
  1329. - In CGI mode, $HTTP_SERVER_VARS now includes all of the environment variables
  1330. as well (Zeev)
  1331. - Allow user to use mysql_use_result in mysql queries (Stas)
  1332. - Fixed a memory leak that would occur when restarting Apache often
  1333. (mookid@sigent.ru)
  1334. - Fixed a bug that prevented $argv and $argc from being defined in the command
  1335. line version of PHP (Stas)
  1336. - Fixed a bug that prevented a changed compile-time extension_dir from
  1337. affecting modules that were loaded via php.ini (Zeev)
  1338. - Fixed a bug in ftp_mkdir() when used on ftp server which doesn't return
  1339. the full path (Jani)
  1340. - Added ImageCreateFromString() which creates an image stream out of
  1341. e.g. a MySQL blob. (Mathieu)
  1342. - Fixed a crash bug in imagewbmp() (Jani)
  1343. - Changed the sablot configuration file so that if you use any version of
  1344. Sablotron below 0.44 you must use Sablotron's built-in Expat libraries.
  1345. (Sterling)
  1346. - Added basic authentication support to thttpd (Sascha)
  1347. - Added support for the Caudium webserver (http://caudium.net/). It's based
  1348. on the Roxen SAPI module. Many bugs have been identified and fixed. (David)
  1349. - Fixed mysql_close(), pg_close(), msql_close() and sybase_close() - they
  1350. weren't properly closing the SQL connections (Zeev)
  1351. - Fixed crypt() to supply random seed if none is given (Andi)
  1352. - Made print_r() support recursive data structures, e.g. $GLOBALS. (Zeev)
  1353. - Fixed a bug that caused PHP not to properly flush its output buffer, if more
  1354. than one output buffer was used. (Zeev)
  1355. - Fixed a bug that could draw the shutdown sequence of the PHP Apache module
  1356. into an endless loop, under certain circumstances. It could cause Apache
  1357. processes under Solaris to get stuck, especially when using output
  1358. buffering. (Zeev)
  1359. - Added support for serializing references (Stas)
  1360. - Fixed conflict with OpenLDAP and Oracle 8.1.x (Jani)
  1361. - parse_ini_file() supports a new optional 2nd argument that instructs it
  1362. to divide the directives to arrays according to the sections in which they
  1363. reside (Zeev)
  1364. - parse_ini_file() is now thread-safe, and supported under Windows (Zeev)
  1365. - Unified aborted-connection semantics of all SAPI modules (Sascha)
  1366. - URL-opened files now store the HTTP response header in $http_response_header
  1367. (Zeev)
  1368. - Fixed array_rand() to shuffle results when the number of requested
  1369. elements is the same as the number of elements in the array. (Andrei)
  1370. - Added replace parameter to header() (Sascha)
  1371. - Fixed handling of single quotes in transparent session-id mode (Sascha)
  1372. - Fixed "php://*" fopen handler (Sascha)
  1373. - Made rename work in threadsafe enviroments (Daniel)
  1374. - Made session_destroy() close files before unlinking (Daniel)
  1375. - Added array_sum() function. (Andrei)
  1376. - Fixed a bug in session.c. The php_session_save_current_state did not check
  1377. if mod_data is NULL and such situation is possible if the user calls
  1378. session_module_name with a parameter. (alex@zend.com)
  1379. - Added IIS Admin extension. (Frank)
  1380. - OCIBindByName() now does better parameter-checking. (Thies)
  1381. - Made read() binary-safe in sockets.c (Chris Vandomelen)
  1382. - Made array_intersect() and array_diff() not alter order (Stig Venaas)
  1383. - Made ldap_connect() accept URL in host parameter when using OpenLDAP
  1384. 2.x. To use SSL, use ldaps://host/ as URL. (Stig Venaas)
  1385. - Made resource type names visible, e.g. var_dump() and
  1386. get_resource_type() display "file" for file resources. (Andrei)
  1387. - Added the curl_getinfo() function to find out information about a CURL
  1388. transfer. This function requires cURL 7.4.0 or above. (Sterling)
  1389. - Added the CURLOPT_KRB4, CURLOPT_INTERFACE, CURLOPT_QUOTE, CURLOPT_POSTQUOTE,
  1390. CURLOPT_QUOTE and CURLOPT_HTTPPROXYTUNNELL options. (Sterling)
  1391. - Renamed the shm_* functions to shmop_* (Derick)
  1392. - Updated ext/mysql/libmysql to version 3.23 (tim@mysql.com)
  1393. - Added ldap_get_option() and ldap_set_option() functions (Stig Venaas)
  1394. - Fixed a crash in CGI mode, in case no file was provided
  1395. (Daniel Beulshausen& Zeev)
  1396. - Fixed possible crash bug in imap_fetchstructure() (Jani)
  1397. - Fixed possible crash bug in imap_open() (Jani & Mark Musone)
  1398. - Added url_rewriter.tags configuration directive (Sascha)
  1399. - Added CORBA client extension, ready for use (eriksson@php.net)
  1400. - Fixed memory leak in x-httpd-source mode (Jason Greene)
  1401. - Changed ext/gd not to be enabled by default (Jani)
  1402. - Make increment of empty string ("") behave like in PHP 3 and result in "1"
  1403. (Andi, Zend Engine)
  1404. - Added POST handler for Adobe FDF format (Hartmut)
  1405. - Added transparent read and write .gz-files on glibc based systems
  1406. using the 'zlib:' fopen wrapper (Hartmut)
  1407. - Fixed a problem in the configuration parser (two null bytes were added
  1408. to each ENCAPSULATED TC_STRING) (alex@zend.com)
  1409. - Added HMAC support in the mhash module (nmav@altera.gr)
  1410. - Added module for Ovrimos sql server (nmav@altera.gr)
  1411. 11 Oct 2000, Version 4.0.3
  1412. - Fixed a possible crash in -a interactive mode (Zeev, Zend Engine)
  1413. - Added mysql_escape_string() (Peter A. Savitch and & Brian Wang)
  1414. - Fixed many possible crash bugs with improper use of the printf() family of
  1415. functions (Andi)
  1416. - Fixed a problem that allowed users to override admin_value's and admin_flag's
  1417. (Zeev)
  1418. - Fixed PostgreSQL module to work when the link handle is omitted (Zeev)
  1419. - Fixed returning of empty LOB fields in OCI8. (Thies)
  1420. - Added Calendar module to default Win32 build (Andi)
  1421. - Added FTP module to default Win32 build (Andi)
  1422. - Fixed crash in the POSIX getrlimit() function (alex@zend.com)
  1423. - Fixed dirname() under certain conditions (Andi)
  1424. - Added --with-imap-ssl to support SSL'ized imap library in RH7 and others
  1425. (Rasmus)
  1426. - Fixed possible crash bug in parse_url() (Andi)
  1427. - Added support for trans sid under Win32 (Daniel)
  1428. - Added IPv6 support in fopen (Stig Venaas)
  1429. - Added the shmop extension. It allows more general ways of shared memory
  1430. access. (thanks to Ilia Alshanestky <iliaa@home.com> and Slava Poliakov
  1431. <slavapl@mailandnews.com> (Derick)
  1432. - Added the ability for CURLOPT_POSTFIELDS to accept an associative array of
  1433. HTTP POST variables and values. (Sterling)
  1434. - Added the CURLOPT_HTTPHEADER option to curl_setopt(). (Sterling)
  1435. - Added the curl_error() and curl_errno() functions. (Sterling)
  1436. - Changed ext/db not to be enabled by default (Jani)
  1437. - Fixed building Apache SAPI module on SCO UnixWare (Sascha)
  1438. - Fixed writing empty session sets to shared memory (tcarroll@chc-chimes.com)
  1439. - Added support for BSD/OS make (Sascha)
  1440. - Added improved URL rewriter (Sascha)
  1441. - Fixed readdir_r() use on Solaris (Sascha)
  1442. - Improved HTTP headers for private-caching (jon@csh.rit.edu, Sascha)
  1443. - Added new function session_cache_limiter (jon@csh.rit.edu, Sascha)
  1444. - Added ftp_exec to the ftp functions (thanks to <jhennebicq@i-d.net>)
  1445. (Derick)
  1446. - PEAR: add last executed query as debug info in DB errors (Stig)
  1447. - PEAR: allow multiple modes in PEAR_Error (Stig)
  1448. - Made the Sybase CT module thread safe (Zeev)
  1449. - Added second argument to array_reverse() that indicatese whether
  1450. the original array keys should be preserved. (Andrei)
  1451. - Clean up htmlspecialchars/htmlentities inconsistencies. (Rasmus)
  1452. - PEAR: renamed DB_GETMODE_* to DB_FETCHMODE_*, added setFetchMode()
  1453. in DB_common to set the default mode, added some MySQL tests (Stig)
  1454. - Made eval() and several other runtime-evaluated code portions report the
  1455. nature and location of errors more accurately (Stas)
  1456. - Added an optional parameter to wordwrap that cuts a string if the length of a
  1457. word is longer than the maximum allowed. (Derick)
  1458. - Added functions pg_put_line and pg_end_copy (Dirk Elmendorf)
  1459. - Added second parameter for parse_str to save result (John Bafford)
  1460. - Fixed bug with curl places extra data in the output. (medvitz@medvitz.net)
  1461. - Added the pathinfo() function. (Sterling)
  1462. - Updated sybase_ct module and its sybase_query to use high performance API.
  1463. (Joey)
  1464. - Added a more configurable error reporting interface to DB. (Stig)
  1465. - Added is_uploaded_file() and move_uploaded_file() (Zeev)
  1466. - Added several directives to php.ini - post_max_size, file_uploads,
  1467. display_startup_errors - see php.ini-dist for further information (Zeev)
  1468. - Worked around a bug in the libc5 implementation of readdir() (Stas)
  1469. - Fixed some potential OpenBSD and NetBSD crash bugs when opening files. (Andi)
  1470. - Added EscapeShellArg() function (Rasmus)
  1471. - Added a php.ini option session.use_trans_sid to enable/disable trans-sid.
  1472. (Sterling)
  1473. - Added the Sablotron extension for XSL parsing. (Sterling)
  1474. - Fixed a bug in checkdate() which caused < 1 years to be valid (Jani)
  1475. - Added support for an optional output handler function for output
  1476. buffering. This enables transparent rendering of XML through XSL,
  1477. transparent compression, etc. (Zeev)
  1478. - Added support for user defined 'tick' callback functions. This helps
  1479. emulate background processing. (Andrei)
  1480. - Fixed problem with having $this as the XML parser object. (Andrei)
  1481. - Internal opened_path variable now uses the Zend memory manager so that full
  1482. paths of files won't leak on unclean shutdown (Andi)
  1483. - Removed support of print $obj automatically calling the __string_value()
  1484. method. Instead define yourself a method such as toString() and use
  1485. print $obj->toString() (Andi, Zend Engine)
  1486. 29 Aug 2000, Version 4.0.2
  1487. - Added PHP API for Zend's ticks. (Stig)
  1488. - PHP 3 regression testing framework re-born (Stig)
  1489. - Added php_uname() function (Stig)
  1490. - Made a minor change to allow building with OpenLDAP 2.0 (Stig Venaas)
  1491. - Fixed a bug in preg_replace() that would truncate subject string if the
  1492. first argument was en empty array. (Andrei)
  1493. - Added ob_get_length function (Stig)
  1494. - Fixed a bug that did not respect limit parameter in preg_replace() when
  1495. using /e modifier. (Andrei)
  1496. - Added ability for each xml_set_*_handler() function to take the
  1497. array($obj, 'method') syntax for the handler argument as well
  1498. as the normal function name. (Andrei)
  1499. - Updated array_walk() to be able to accept array($obj, 'method')
  1500. syntax for the walk function. (Andrei)
  1501. - Fixed segfault with fgets(), fgetcsv(), fgetss(), and fread() when
  1502. called with negative length argument. (Torben)
  1503. - Fixed by-reference parameters passing for xml_ functions and for scanf
  1504. functions (Stas)
  1505. - Added experimental Oracle LDAP SDK support. 8.1.6 or later needed. Configure
  1506. with something like --with-ldap=/usr/local/oracle/product/8.1.6 (Stig Venaas)
  1507. - Fixed memory leaks in eval(); A script that used eval() extensively, could
  1508. end up consuming very large amounts of memory during execution (Zeev, Zend
  1509. Engine)
  1510. - Fixed memory_limit feature, which did not work properly in previous versions
  1511. (Zeev, Zend Engine)
  1512. - Fixed stdout support with the swf extension. (Sterling)
  1513. - Fixed byte order for ip2long and long2ip (Stas)
  1514. - Fixed dbase_add_record. (Sterling)
  1515. - Added support for libmcrypt 2.4.4 (Derick)
  1516. - Added strncasecmp function (Andi, Zend Engine)
  1517. - Fixed FTP module to accept multiline server replies (Jani)
  1518. - Fixed switch which only has a single default rule. (Andi, Zend Engine)
  1519. - Fixed problem with nested foreach()'s. (Andi, Zend Engine)
  1520. - The CCVS module is now stable and compiling. It compiles as a CGI and into
  1521. Apache cleanly without warnings. (Brendan W. McAdams)
  1522. - Fixed mSQL_close(). (nick@loman.net)
  1523. - Made return() in a require()'d file work like return() in an include()'d
  1524. file (Andi & Zeev, Zend Engine)
  1525. - Changed require_once() to work using the same table as include_once()
  1526. (Andi & Zeev, Zend Engine)
  1527. - Fixed PostgreSQL module to work when the link handle is omitted (Zeev)
  1528. - Fixed the Sybase modules to work properly with PHP 4.0 (Zeev)
  1529. - Fixed CLOB handling in OCI8 driver when using variable-width
  1530. character sets. (Thies)
  1531. - Added 4th optional parameter to sybase_[p]connect to specify the charset
  1532. for the connection (alf@alpha.ulatina.ac.cr)
  1533. - Fixed support for current thttpd releases. (Sascha)
  1534. - Added support for kerberized IMAP library using --with-kerberos
  1535. (Rasmus, Sascha)
  1536. - Virtualize realpath, chmod, chown and utime (Stas)
  1537. - Support content-encoding headers in file upload MIME parts
  1538. (Ragnar Kj�rstad)
  1539. - Fixed warning when shutting down OCINLogon() connections. (Thies)
  1540. - Fixed \n in session variables bug on Win32 (Stas)
  1541. - OCIError() would sometimes not report failed connections. (Thies)
  1542. - Fixed HEAD request bug on an Apache ErrorDocument redirect and preserve
  1543. the status code across the redirect as well. (Rasmus)
  1544. - Added Olympus-specific tags to read_exif_data() (Rasmus)
  1545. - Fixed bug in imap_fetchheader() where using FT_PREFETCHTEXT didn't return
  1546. the body. Bug #4447. (Jani)
  1547. - Fixed exec() returning "\0" when output is empty
  1548. - Added XML_Parser class in PEAR (Stig)
  1549. - Added "make test" target in pear/ and added some regression tests (Stig)
  1550. - Fixed bug in strip_tags function as per bug #5857 (Rasmus)
  1551. - Fixed reading of IPTC via GetImageInfo() for certain JPEG files. (Thies)
  1552. - Improved the output-buffering functions to be re-entrant (Zeev)
  1553. - Made ldap_add(), ldap_modify(), ldap_mod_add(), ldap_mod_replace()
  1554. binary-safe. Original patch: Terrence Miao <terrence_miao@email.com> (Jani)
  1555. - CGI aka. command line version has now an option '-l' for syntax check
  1556. without execution (Hartmut)
  1557. - Fixed bug in ldap_get_values_len() which makes it NULL-safe. (Jani)
  1558. - Bug-report and fix submitted by Michel Alexeline <alexel@dr15.cnrs.fr>
  1559. - Make ext_skel create a Makefile.in set up to handle shared extension
  1560. support automatically (Rasmus)
  1561. - Fixed php_realpath not to die on non-existing files (needed for touch())
  1562. (Stas and china@thewrittenword.com)
  1563. - Fixed get_browser() function (Stas)
  1564. - Fixed symbol clash which caused a DSO problem on OpenBSD (Rob Black and
  1565. anil@recoil.org)
  1566. - Added new function: ldap_compare(). (Jani)
  1567. - Fixed a bug in ldap_get_entries() and ldap_get_attributes(). (Jani)
  1568. - Ported DB to new error reporting scheme in PEAR. (Stig)
  1569. - Added sybase and ibase DB backends in PEAR. (Sterling)
  1570. - New PEAR package Payment_Verisign for use with the Payflow Pro
  1571. (pfpro) extension. (David Croft)
  1572. - Added CURL support. (Sterling)
  1573. - Catch users trying to set "compatibility" parameter in PDF, which is not
  1574. supported from user-land. (Joey)
  1575. - Fixed dbase_add_record. (Sterling)
  1576. - Added new function wordwrap() to wordwrap long strings from Chris
  1577. Russel <russel@yorku.ca> (David Croft)
  1578. - Added four additional arguments: attrsonly, sizelimit, timelimit, deref which
  1579. were missing in ldap_search(), ldap_list() and ldap_read() functions (Jani)
  1580. - Fixed a bug in ldap_search/list/read() which prevented returning the partial
  1581. results when 'Sizelimit exceeded' error occurred. (Jani Taskinen)
  1582. - Fixed preg_replace() to automatically escape quotes in matched
  1583. strings when using /e modifier. (Andrei)
  1584. - Itanium patch (Steve Robb)
  1585. - Set default include_path so PEAR files can be reached (Stig)
  1586. - Added "pear" executable, requires CGI version installed (Stig)
  1587. - Added extension ii for Ingres II native support. See README in ext/ingres_ii
  1588. directory. (David H)
  1589. - Added Win32 project for the Interbase module (Zeev)
  1590. - Added ability to perform calls to the parent class without explicitly
  1591. specifying its name, using parent::func_name(...) (Zeev, Zend Engine)
  1592. - You can now call Ora_Error() without prameters to get the reason
  1593. for a failed connection attempt. (Kirill Maximov)
  1594. - New extension "pfpro" for interface with Verisign Payflow Pro (David Croft)
  1595. - Added IMG_GIF, IMG_JPG, IMG_JPEG, IMG_PNG and IMG_WBMP constants for
  1596. imagetypes() function (Rasmus)
  1597. - Added ImageTypes() function which returns a bitfield with the supported
  1598. image formats. 1=gif, 2=jpeg, 4=png and 8=wbmp (Rasmus)
  1599. - Make it possible to specify an empty string as a thousands-seperator
  1600. in number_format() (Rasmus)
  1601. - Shared module support for LDAP extension (Troels Arvin)
  1602. - Fixed a bug with imap_mail where apache would segfault if the rpath
  1603. parameter was specified.
  1604. - Use dashes and short day name in cookies since some browsers seem picky
  1605. about this (Rasmus)
  1606. - Added pspell module. (Vlad)
  1607. - Added 3 additional arguments to the user-defined error handler - the file
  1608. name and line number in which the error occured, and the context (local
  1609. variables) of the code in which the error occured (Zeev, Zend Engine)
  1610. - Improved the error handling code to handle an error in a user-defined error
  1611. handling function (Zeev, Zend Engine)
  1612. - Fixed leak when using string offsets in the array() construct.
  1613. (Andi, Zend Engine)
  1614. - Fixed corruption problem when changing deeply nested values in objects.
  1615. (Andi & Zeev, Zend Engine)
  1616. - Improved array_multisort() to be able to specify sort type as well sort
  1617. order. Incidentally, it can be used to sort multi-dimensional arrays
  1618. as well. (Andrei)
  1619. - Fixed a possible data corruption in case of a huge amount of aborted requests
  1620. (Zeev)
  1621. - Apache module would sometimes close a wrong file-descriptor. (Sascha)
  1622. - Fixed use of alternative storage handlers in the session module. (Sascha)
  1623. - Updated str_pad() to be able to pad on left/right/both sides. (Andrei)
  1624. - Fixed crash in gzopen(). (Thies)
  1625. - Multiple character set support in gdttf.c (Rob Goodwin)
  1626. - When using HTTP auth from PHP, fill in the %u custom log field so the
  1627. authenticated used id will get logged in the Apache access_log (Rasmus)
  1628. - Support for pdflib 3.01. (Uwe)
  1629. - FDF Data is handled properly and can be accessed by reading
  1630. HTTP_RAW_POST_DATA. (Uwe)
  1631. - Added new 'O' format modifier that will output the GMT offset as "[+-]HHMM"
  1632. (eg: Pacific time is -0700). This is useful for things such as Date: mail
  1633. headers. (Mike W)
  1634. - Fixed crash on OCI?Logon() failure. (Thies)
  1635. - Make the special Header("http/...") response be case insensitive like 3.0
  1636. (Rasmus)
  1637. - Allow cybercash to compile as a DL module. (Sterling)
  1638. - Fixed the dbase_create function. (Sterling)
  1639. - Fixed a problem under some versions of Windows that could cause PHP to hang
  1640. on startup if errors occured, e.g. in the php.ini file (Zeev)
  1641. - Fixed opendir() again. It should actually work well continuously now (Zeev)
  1642. - Added three additional arguments to be sent to a user-defined error handler -
  1643. the filename and line number in which the error occured, and the context
  1644. (the local variables) of the error (Zeev, Zend Engine)
  1645. - Improved the error handling code to handle an error in a user-defined error
  1646. handling function (Zeev, Zend Engine)
  1647. - Added an optional parameter to preg_replace() that can be used to
  1648. specify how many replacements to make. (Andrei)
  1649. 28 Jun 2000, Version 4.0.1
  1650. - Fixed a possible crash in the LDAP modify code. (Eric Kilfoil)
  1651. - Fixed a bug in opendir(), which prevented readdir() from working properly if
  1652. the $dir argument wasn't explicitly specified (Zeev)
  1653. - Made --enable-discard-path work again. (Andi)
  1654. - Removed 8KB limit on line length of the file() function (Zeev)
  1655. - Disabled dl() when PHP is being used as a module inside a multithreaded web
  1656. server - it didn't work before, and caused weird results (Zeev)
  1657. - Added the ImageColorClosestHWB(), ImageCopyMerge() and ImagePaletteCopy()
  1658. functions. (Sterling)
  1659. - Added ImageCreateFromWBMP() function. (Jouni)
  1660. - Fixed problems with POST requests under the NSAPI module. (Roberto Biancardi)
  1661. - Added spliti() function. (Thies)
  1662. - Fixed serializer behaviour with regards to serializing objects whose class
  1663. definition was not available in the deserializing context. (Sascha)
  1664. - Improve memory cache performance and increase cache size. (Stas, Zend Engine)
  1665. - Added a crc32 checksum function - used by the UdmSearch search engine
  1666. and currently run through a system call. This will speed up the UdmSearch
  1667. php frontend significantly. (Rasmus)
  1668. - Modified in_array() to not touch array pointer. (Andrei)
  1669. - Added restore_error_handler(). (Zeev, Zend Engine)
  1670. - Fixed erroneous file names and line numbers in error situations under the
  1671. multithreaded version of PHP - most noticeably Win32 (Zeev, Zend Engine)
  1672. - Fixed problem with CGI crashing on certain servers especially Windows Apache
  1673. & O'Reilly website (Andi)
  1674. - Added Pi3Web SAPI module; run ./configure --with-pi3web to enable this.
  1675. (Holger; zimpel@t-online.de)
  1676. - Enhanced WDDX functions to call __sleep() and __wakeup() when working on
  1677. objects. (Andrei)
  1678. - Changed WDDX to serialize arrays as structs only if needed. (Thies)
  1679. - Implemented max_execution_time under Win32 (Zeev)
  1680. - Updated strtotime() to handle many more formats. It now has complete
  1681. feature parity with GNU date command. (Andrei)
  1682. - Added support for multiple arguments in unset(). (Faisal, Zend Engine)
  1683. - Functions that expect a resource but are passed something else now return
  1684. NULL instead of FALSE. (Thies, Zend Engine)
  1685. - Fixed gmmktime(), on certain systems it incorrectly adjusted for the timezone
  1686. offset and daylight savings time. (Andrei)
  1687. - Moved VC++ Win32 project and workspace files to the win32 directory
  1688. (Zeev)
  1689. - Fixed checkdate() to not return true on non-numeric arguments (Rasmus)
  1690. - Added --enable-c9x-inline option for compilers which support the new C9x
  1691. standard. If you encounter undefined references to i_zend_is_true and
  1692. other symbols, you should enable this. (Sascha, Zend Library)
  1693. - Fixed a problem in ldap_add() and ldap_modify(), sometimes added trailing
  1694. garbage to the values (Stig Venaas)
  1695. - Fixed a problem with dbmopen() not handing 'c' correctly with dbm/db/ndbm
  1696. databases. (JimJag)
  1697. - Fixed a crash in number_format() when used with locales. (Andrei)
  1698. - Fixed an initialization problem in the MS-SQL problem that could cause
  1699. a crash in mssql_query() (Zeev)
  1700. - Upgraded PCRE to version 3.2 and fixed a bug when anchored pattern
  1701. matched an empty string. (Andrei)
  1702. - Fixed a bug that prevented PHP from paying attention to the extension_dir
  1703. directive with extensions that were loaded from the php.ini file (Zeev)
  1704. - Changed set_error_handler() to return the name of the previously defined
  1705. error handler, if any (Zeev, Zend Engine)
  1706. - Declared <?php_track_vars?> officially dead. It didn't work in PHP 4.0.0
  1707. either, but now it's gone for good (Zeev)
  1708. - Make convert_cyr_string() binary safe and stop it from corrupting other
  1709. PHP variables. (Andi)
  1710. - Added functions array_unique, array_intersect and array_diff (Stig Venaas)
  1711. - Fixed problem when using uninitialized values in comparisons with strings.
  1712. They behave as empty strings again just like in PHP 3.
  1713. (Andi & Zeev, Zend Engine)
  1714. - Fixed 'Z' flag in date() to adjust for daylight savings time. (Andrei)
  1715. - Fixed var_dump() not to modify the internal order of array elements (Zeev)
  1716. - Fixed stripcslashes() to remove to strip \ in unknown escapes instead of
  1717. leaving it. (Andrei)
  1718. - Changed WDDX to always serialize arrays as structs. (Andrei)
  1719. - Fixed include_once() to issue a warning in case the supplied file name is
  1720. not found (Zeev, Zend Engine)
  1721. - Fixed a bug in get_declared_classes() which could return the same class
  1722. multiple times under certain circumstances (Zeev, Zend Engine)
  1723. - Fixed a bug in rawurldecode() that would cause in rawurldecode() corrupting
  1724. its argument (Zeev)
  1725. - Parse errors (or other errors) in the php.ini files under Windows will no
  1726. longer mess up the HTTP headers in CGI mode and are now displayed in a
  1727. message box (Zeev)
  1728. - Fixed a crash in OCIFetchStatement() when trying to read after all data
  1729. has already been read. (Thies)
  1730. - fopen_wrappers() are now extensible via modules (Hartmut Holzgraefe)
  1731. - Make trim strip \0 to match php 3 (Rasmus)
  1732. - Added function imagecreatefromxbm(). (Jouni)
  1733. - Added function imagewbmp(). (Jouni, based on patch from Rune Nordb�e
  1734. Skillingstad)
  1735. - Added str_pad() for padding a string with an arbitrary string on left or
  1736. right. (Andrei)
  1737. - Made the short_tags, asp_tags and allow_call_time_pass_reference INI
  1738. directives work on a per-directory basis as well, e.g. from .htaccess
  1739. files. (Zeev)
  1740. - Added fflush() function. (Eric Huss)
  1741. - Fixed a problem with static variables, default function arguments and class
  1742. member variables, that contained array values. (Andi & Zeev, Zend Engine)
  1743. - Fixed virtual() when used with output buffering (Marc Pohl)
  1744. - Clean up constants in flock() function and add optional 3rd arg which
  1745. is set to true on EWOULDBLOCK (Rasmus)
  1746. - Added functions pg_loimport(), pg_loexport(). (Jouni)
  1747. - Added SWF support to getimagesize() function (Derick Rethans)
  1748. - Added support for both indexed and non-indexed arrays of file uploads
  1749. eg. name="file[]" type="file" (Rasmus)
  1750. - Added create_function(), which gives the ability to create functions
  1751. on-the-fly (Zeev, Zend Engine)
  1752. - Added support for comparisons of arrays (with arrays) and objects (with
  1753. objects); The equality operator (==) performs an unordered comparison,
  1754. whereas the identity operator (===) performs an ordered comparison (Zeev,
  1755. Zend Engine)
  1756. - Allow all functions that receive user-defined function callbacks to accept
  1757. an array that contains an object and a method name, in place of a function
  1758. name, e.g. usort($array, array($obj, "ObjSort")) (Zeev, Zend Engine)
  1759. - Added set_error_handler() to allow custom error handling functions,
  1760. instead of the built-in error handling code (Zeev, Zend Engine)
  1761. - Renamed user_error() to trigger_error(); user_error() remains
  1762. defined for compatibility (Zeev, Zend Engine)
  1763. - Fixed the global/static statements to require a trailing terminating
  1764. semi-colon ';'. (Andi, Zend Engine)
  1765. - Cleaned up PCRE extension and made it binary-safe. (Andrei)
  1766. - Added third argument to in_array(). If it's true, then in_array()
  1767. will use strict comparison instead of the default one. (Andrei)
  1768. - Added pg_trace() and pg_untrace (Dominic J. Eidson & Zeev)
  1769. - ignore_user_abort=Off is now default. (Thies)
  1770. - Added array_merge_recursive() that will recursively merge values
  1771. under the same keys. (Andrei)
  1772. - fixed crash in OCIParse when parsing invalid SQL. (Thies)
  1773. - Fixed a bug in mysql_connect() that made it ignore the socket argument, in
  1774. case of non-persistent connects (Zeev)
  1775. - Added disable_functions php.ini directive, to allow administrators to disable
  1776. certain functions for security reasons (Zeev)
  1777. - Fixed sessions on Win32. When setting the directory depth parameter in
  1778. save_path you need to now delimit it with a ';' instead of ':', e.g
  1779. "5;/tmp" instead of "5:/tmp" (Andi)
  1780. - Changed the Apache handler's return status to 'Declined' when a requested
  1781. PHP file could not be found. Returning 'Not Found' caused problems
  1782. in the ErrorDocument handler stage in that $REDIRECT_REDIRECT_ERROR_NOTES
  1783. was not getting set at all. Moving to 'Declined' should fix this and I
  1784. can't see any other side effects. (Rasmus)
  1785. - Fixed scanning decimal numbers in internationalized environments. They should
  1786. always be in standard US format e.g. 23.3. (Andi, Zend Engine)
  1787. - Added second argument to preg_quote() which allows quoting of
  1788. one additional character, usually the regex delimiter. (Andrei)
  1789. - Uncommitted outstanding OCI8 transactions are now rolled back
  1790. before the connection is closed. (Thies)
  1791. - ignore_user_abort() & friends should now work in CGI mode as well.
  1792. (Patch by daniel.braun@ercom.fr)
  1793. - Added extension YAZ (dickmeiss).
  1794. - Fixed a crash bug triggered by certain cases of class redeclarations
  1795. (Stas & Zeev, Zend Engine)
  1796. - Fixed min()/max() segfault. (Andrei)
  1797. - New module for reading EXIF header data from JPEG files. Most digital
  1798. cameras will embed all sorts of information about a picture inside the
  1799. jpeg images it generates. (Rasmus)
  1800. - Fixed basename() bug where "file.ext///" would not return the same
  1801. as "/path/file.ext///" (Rasmus)
  1802. - Added the swf_ortho function. (Sterling)
  1803. - Moved to virtual current working directory support. This highly improves the
  1804. functionality and stability of multi-threaded versions of PHP (Andi, Sascha)
  1805. 22 May 2000, Version 4.0.0 Release
  1806. - Allow the writing of flash files to stdout.
  1807. - Fixed a crash bug in .phps syntax-highlighted files (Andi)
  1808. - Improved round() to allow specification of rounding precision.
  1809. (Andrei, Todd Kirby <kirbyt@yahoo.com>)
  1810. - Added SORT_REGULAR, SORT_NUMERIC, SORT_STRING flags that can be used with
  1811. non-user sort functions for precise sorting behavior. (Andrei)
  1812. - Fixed two 64-bit issues (startup crash, gethostbyaddr). (Sascha)
  1813. - NULL values are now preserved in the return value of mysql_fetch_array()
  1814. and mysql_fetch_object(). (Andrei)
  1815. - Ported InterBase module finally from PHP 3 to PHP 4. Full support for
  1816. InterBase 6. (Jouni)
  1817. - Added swf_definepoly for drawing polygons to the SWF functions. (Sterling)
  1818. - Ported imagegammacorrect from PHP3 to PHP4. (Sterling)
  1819. - Added array_rand() function. (Andrei)
  1820. 8 May 2000, Version 4.0 Release Candidate 2
  1821. - NSAPI WIN32 Module compilable, untested (Shane)
  1822. - Apache WIN32 Module compilable and lightly tested. (Shane)
  1823. - Enabled assert() by default in php.ini-dist. (Andrei)
  1824. - Put in safeguards in case dynamic code evaluation in assert() and
  1825. preg_replace() with /e modifier fails. (Andrei)
  1826. - Fixed infinite recursion when serializing $GLOBALS[] in WDDX. (Andrei)
  1827. - Made WDDX serialization properly escape <, >, and &. Also speeded up
  1828. the serialization in general. (Andrei)
  1829. - Moved install-local to install-sapi for clarity. (Joey)
  1830. - Improved extension build framework. Refer to README.SELF-CONTAINED-EXTENSIONS
  1831. for an introduction. (Sascha)
  1832. - ImagePolygon() is no longer limited by a maximum number of polygons.
  1833. (Marc Pohl)
  1834. - Added configure time checking for bcmath package. (Joey, Sascha)
  1835. - Added get_declared_classes(). (Andrei, Zend Engine)
  1836. - Added initial NSAPI module from Jayakumar Muthukumarasamy. (Rasmus)
  1837. - Added the SWF module which allows you to create Macromedia Flash files via
  1838. libswf. (Sterling)
  1839. - Improved UNIX build system to support more vendor make tools (Sascha)
  1840. - Updated natural comparison/sorting algorithm by Martin Pool
  1841. <mbp@humbug.org.au>. (Andrei)
  1842. - Fixed a crash in array_multisort() that happened when empty arrays
  1843. were passed to it. (Andrei)
  1844. - Added substr_count() from Peter Kovacs. (Andrei)
  1845. - Added an optional third argument to fseek to indicate where to seek from.
  1846. (Andrei)
  1847. - OCIBindByName() will no longer complain about bindlength beeing zero. (Thies)
  1848. - Converted the IMAP module to the high performance API (Zeev)
  1849. - The fgetcsv() function now handles embedded end-of-line in a quoted field
  1850. (Nick Talbott)
  1851. - Added user_error(), to allow explicitly generate error messages from scripts
  1852. (Zeev, Zend Engine)
  1853. - Fixed a problem in long2ip() that occasionally returned incorrect IP address.
  1854. (Evan, Andrei)
  1855. - Fixed many memory leaks in the IMAP module (Stas, Andi, Zeev)
  1856. - Fixed bug in number_format (Jon Forsberg)
  1857. - Make error_prepend_string and error_append_string work (Rasmus)
  1858. - array_walk() now automatically resets the array. (Andrei)
  1859. - Added natural comparison/sorting routines strnatcmp(), strnatcasecmp(),
  1860. natsort(), and natcasesort(). These are useful for comparing and sorting
  1861. strings that contain numbers. Based on the code from Martin Pool
  1862. <mbp@humbug.org.au>. See http://www.linuxcare.com.au/projects/natsort/
  1863. for more info on natural sorting. (Andrei)
  1864. - Zeus Webserver support (version 3.3.6+) for ISAPI (Ben Mansell)
  1865. - Fixed several problems with the PATH_TRANSLATED and PHP_SELF under Apache
  1866. (Paul Gregg & Zeev)
  1867. - Ported ldap_get_values_len() function from PHP3 to PHP4. (Sterling)
  1868. - Fixed a problem in include_once() with non constant arguments (Andi & Zeev,
  1869. Zend Engine)
  1870. - Added php.ini-optimized (Zeev)
  1871. - Ported ldap_errno(), ldap_err2str() and ldap_error() from PHP3 to PHP4.
  1872. (Sterling)
  1873. - WDDX now defaults to ISO-8859-1. (Thies)
  1874. - Fixed crash resulting from IMAP's error handling (Stas)
  1875. - Added $HTTP_POST_FILES[filename][tmp_name] - it was previously impossible to
  1876. retrieve the temporary name of an uploaded file using $HTTP_POST_FILES[]
  1877. (Zeev)
  1878. - Made the IMAP and LDAP modules compilable under Windows and thread-safe
  1879. (Zeev)
  1880. - Fixed a problem when dealing with large POST blocks in CGI mode (Zeev)
  1881. - Added session_get_cookie_params() function. (Sterling)
  1882. - Fixed return of stristr() to no longer always be lowercased. (Andrei)
  1883. - Changed the Windows version of PHP so that a php.ini file is no
  1884. longer mandatory (Zeev)
  1885. - session_start() is now more verbose if headers cannot be send. (Thies)
  1886. - Fixed a memory leak when using assign-op bitwise operators on strings (Zeev,
  1887. Zend Engine)
  1888. - Added support for reading properties that require arguments in the COM
  1889. module - writing to them will only be supported in PHP 4.1 (Zeev)
  1890. - Fixed a very old legacy memory leak in the COM module (Zeev)
  1891. - Fixed problems with object-overloading support - noteably, COM and Java
  1892. (Zeev, Zend Engine)
  1893. - Fixed an overrun in WDDX. (Thies)
  1894. - Fixed a crash bug with modules loaded through dl() not properly freeing their
  1895. resources (Zeev, Zend Engine)
  1896. - Added localtime() function. (Sterling)
  1897. - Added the 'I' format option for the date function, this option will return
  1898. true or false depending on whether or not daylight savings time is in effect.
  1899. (Sterling)
  1900. - Added gmstrftime() function. (Sterling)
  1901. - snmp_walkoid is now an alias for snmp_realwalk. (Sterling)
  1902. - Fixed a bug that could cause a crash when using 'global' inside large include
  1903. files (Stas, Zend Engine)
  1904. - Added --enable-libgcc switch to force linking against libgcc (Sascha)
  1905. - Fixed dynamic loading where extension_dir had no trailing slash (Sascha)
  1906. - Fixed dynamic loading on OpenBSD (Sascha)
  1907. - Improved POSIX threads check. ZTS works now on at least Linux, Solaris,
  1908. FreeBSD and OpenBSD (Sascha, TSRM)
  1909. - Added !== operator support. (Torben, Zend Engine)
  1910. 27 March 2000, Version 4.0 Release Candidate 1
  1911. - Added support for UCD-SNMP 4.1.x (Sascha)
  1912. - Fixed a data corruption bug in mysql_result(), if used in table.fieldname
  1913. mode (Zeev)
  1914. - Fixed a crash problem in func_num_args(), func_get_arg() and func_get_args()
  1915. when used as function arguments (Andi, Zend Engine)
  1916. - Added get_class_methods(string classname) function. (Andrei)
  1917. - Added 'I' switch to test whether or not DST is active. (Sterling)
  1918. - Fixed a data corruption bug in mysql_result(), if used in table.fieldname
  1919. mode (Zeev)
  1920. - Modified the registry INI entry reader (Win32) to work with drive letters.
  1921. For example, if you wish to wish to specify INI entries for C:\foo\bar, you
  1922. should create HKLM\PHP\Per Directory Values\C\foo\bar in the registry, and add
  1923. string values for each directive you want to override in this directory (Zeev)
  1924. - Fixed extract() for EXTR_PREFIX_SAME and EXTR_SKIP cases. (Andrei)
  1925. - stristr() no longer modifies it's arguments. (Thies)
  1926. - Don't default to iso-8859-1 since this confuses some browsers. (Rasmus)
  1927. - Make it possible to specify both a port and a socket
  1928. in mysql_[p]connect. (Rasmus)
  1929. - Added --disable-pic for disabling generating PIC for shared objects
  1930. on platforms which support it (i.e. Linux) (Sascha)
  1931. - serialize()/unserialize() now call __sleep() and __wakeup() when
  1932. working on objects. (Thies)
  1933. - renamed to_string() method to __string_value() for consistency.
  1934. (Thies, Zend Engine)
  1935. - Fixed a bug in the third argument to define()
  1936. - Added is_numeric() that returns true if the argument is a number
  1937. or a numeric string. (Andrei)
  1938. - domxml now supports libxml 2.0 Beta and drops support for older versions,
  1939. due to massive changes in libxml
  1940. - fixed possible crash in unserialize() if serialized data was
  1941. corrupted. (Thies)
  1942. - Changed $HTTP_STATE_VARS to $HTTP_SESSION_VARS. Use only the latter
  1943. version now! (Andrei)
  1944. - Added GD-JPEG Support (Rasmus)
  1945. - Prevent from loading dynamic PHP modules which were compiled with different
  1946. debug and thread safety modes than PHP, which resulted in a crash (Andi)
  1947. - connection_aborted() and friends work again (Thies)
  1948. - Upgraded to libtool 1.3.4 (Sascha)
  1949. - UNIX configure creates config.nice in the build directory now which allows
  1950. easy reuse of configuration options (Sascha)
  1951. - Added support for embedded MySQL client library. Unless you specify a path
  1952. to --with-mysql, the bundled MySQL client library will be used (Sascha)
  1953. - Added include_once() and require_once() functionality (Andi, Zend Engine)
  1954. - Removed support for pdflib < 3.0 (Uwe)
  1955. - Added auto-registration of everything in $HTTP_SESSION_VARS[] if
  1956. register_globals is turned off. (Andrei)
  1957. - Cleaned up extension namespace (Stig)
  1958. - OCINLogon() sessions are now closed again. (Thies)
  1959. - Added ip2long() and long2ip(),
  1960. courtesy of Faisal Nasim <faisal@nasim.org> (Andrei)
  1961. - Added ftruncate() and fstat(),
  1962. courtesy of Faisal Nasim <faisal@nasim.org> (Andrei)
  1963. - Added parse_ini_file(). Currently implemented in non thread safe version
  1964. of PHP, and currently lacks section support (Zeev)
  1965. - "none" is now equivalent with "" in Apache config directives (Stig)
  1966. - OCINLogon no longer crashes. (Thies)
  1967. - Fixed comparisons of (string) "nan" with (string) "nan". (Thies, Zend Engine)
  1968. - Switched back to the old $HTTP_*_VARS[] behavior - $HTTP_GET_VARS["foo"]
  1969. and $foo are no longer references to each other, but separate variables
  1970. like they were prior to PHP 4.0 Beta 4 (Zeev)
  1971. - Fixed Sybase-DB compilation (Zeev)
  1972. - Fixed a (fairly common) situation where error_reporting values would not be
  1973. properly restored after a call to error_reporting(), in between requests
  1974. (Zeev)
  1975. - The various $HTTP_*_VARS[] are now protected, and cannot be manipulated by
  1976. user input (Zeev)
  1977. - Added ini_set() as an alias to ini_alter() (Zeev)
  1978. - The string None is now recognized as a keyword by the php.ini processor, and
  1979. can be used to denote an empty string (Zeev)
  1980. - Added get_class_vars(string class_name) and get_object_vars(object obj)
  1981. functions. (Andrei, Zend Engine)
  1982. - Added pdf_set_parameter(), pdf_skew(), pdf_show_boxed() (Uwe)
  1983. - Fixed comparison of (string) "inf" with (string) "inf", which was erroneously
  1984. returning false (Zeev)
  1985. - Implemented default_charset and default_mimetype config directives (Stig)
  1986. - Ported T1lib support from PHP3. (Jouni)
  1987. - Fixed -DEAPI inheritance from APXS. (Sascha)
  1988. - Fixed possible crash in module-shutdown. (Thies)
  1989. - Fixed safe_mode_protected_env_vars INI directive (Zeev)
  1990. - Fixed getrusage() (Sascha)
  1991. - Fixed OCI8 crash when returning cursors from stored-procedures. (Thies)
  1992. 21 February 2000 Version 4.0 Beta 4 patch level 1
  1993. - Fixed crash when magic_quotes were switched off. (Thies)
  1994. - Support for pdflib 2.30 (Uwe)
  1995. 20 February 2000, Version 4.0 Beta 4
  1996. - Introduced $HTTP_POST_FILES[], that contains information about files uploaded
  1997. through HTTP upload (Zeev)
  1998. - Made PHP work under Microsoft Personal Web Server, under both Windows NT
  1999. workstation and Windows 95 (Zeev)
  2000. - Made multipart/form-data content obey to the variables_order directive (Zeev)
  2001. - Updated the browscap module to work with PHP 4.0 (Zeev)
  2002. - Recover gracefully in ISAPI after the client prematurely presses STOP (Andi)
  2003. - Fixed bug in unset() on array offsets which are referenced more than once
  2004. (Andi, Zend Engine)
  2005. - Improved ISAPI module - it should no longer be necessary to set PHP as
  2006. an ISAPI filter, only as an ISAPI extension, unless you wish to perform
  2007. authentication using PHP. This didn't yet get enough testing, but it
  2008. should work (Zeev)
  2009. - Fixed RFC1867 file upload under Windows (Zeev)
  2010. - Initital support for pdflib 2.20 (Uwe)
  2011. - Added PostgreSQL support for DB (Rui Hirokawa <louis@cityfujisawa.ne.jp>)
  2012. - Re-introduced "none" for disabling auto_prepend/append_file (Stig)
  2013. - Added DB/storage (Stig, PEAR)
  2014. - Introduced DB warnings (Stig, PEAR)
  2015. - Fixed overrun in strip_tags (Stas)
  2016. - Fixed crash in strip_tags() and related functions. (Thies)
  2017. - Workaround for bogus POST-Data from IE/Mac. (Thies)
  2018. Patch by Alain Malek <alain@virtua.ch>
  2019. - Finished the server abstraction layer; All of the PHP code is now shared
  2020. across different servers (Apache, CGI, IIS, etc.), except for thin
  2021. interface modules (Zeev)
  2022. - Added NULL-support in gettype(). (Thies)
  2023. - base64_decode() will decode POST data correct. (Thies)
  2024. Patch submitted by: Turadg Aleahmad <turadg@wise.berkeley.edu>
  2025. - Much more work on domxml. Build xml tree, create xml doc works (Uwe)
  2026. - Made foreach() work on objects. (Thies, Zend Engine)
  2027. - Added domxml extension based on libxml, still little functionality (Uwe)
  2028. - Fixed memory corruption in fgetss(), strip_tags() and gzgetss() (Zeev)
  2029. - Updated calendar dynamic library to work with PHP 4. (Evan)
  2030. - Added strncmp() function, courtesy of Walter. (Andrei)
  2031. - Made the output of var_dump() more informative. (Thies)
  2032. - Fixed some OCIBindByName() problems. (Thies)
  2033. - Protect the ISAPI module against exceptions. Stack overflows in scripts are
  2034. now nicely detected and handled (Zeev)
  2035. - Fixed possible buffer-overflow in base64_decode. (Thies)
  2036. - Fixed possible buffer-overflow in setcookie(). (Thies)
  2037. - Fixed signal() bug that could cause the Apache master process to
  2038. die. (Thies)
  2039. - Added session_set_cookie_params() function. (Andrei)
  2040. - If header information is sent after output has already been sent, the warning
  2041. message will now state the filename and line number at which the first output
  2042. was made (Zeev)
  2043. - Added the XML Expat library to the standard PHP source distribution thanks
  2044. to its author James Clark (Andi & Zeev)
  2045. - Added XML support to the default Win32 build (Andi & Zeev)
  2046. - Added socket_get_status() function. Renamed:
  2047. set_socket_timeout() -> socket_set_timeout()
  2048. set_socket_blocking() -> socket_set_blocking(). (Andrei)
  2049. - Added realpath() function. (Andrei)
  2050. - mktime interprets years in the range 0-70 now as 2000-2070. You can
  2051. continue to specify the complete year (i.e. 1920) (Sascha)
  2052. - Added the ability to control the environment variables the user is allowed
  2053. to change in Safe Mode, using INI directives (Zeev)
  2054. - Fixed a crash bug in strtr() working on large input strings (Zeev)
  2055. - Ora_GetColumn()/Ora_FetchInto() now return NULL for NULL-Columns. (Thies)
  2056. - OCI8 now supports binding of NULL-values. Module cleanups. (Thies)
  2057. - Added ability to set timeout on socket read operations through
  2058. set_socket_timeout() function. (Andrei)
  2059. - Added implicit_flush INI directive (Zeev)
  2060. - Added implicit_flush() to control whether flush() should be called
  2061. implicitly after any output (Zeev)
  2062. - Fixed a crash in pfsockopen() (Zeev)
  2063. - Fixed a possible crash in phpinfo() (Zeev)
  2064. - Added register_argc_argv INI directive, to allow to selectively disable
  2065. the declaration of the $argv and $argc variables for increased
  2066. performance (Zeev)
  2067. - Added $HTTP_ENV_VARS[] and $HTTP_SERVER_VARS[] support, which similarly
  2068. to $HTTP_GET_VARS[], contain environment and server variables. Setting
  2069. register_globals to Off will now also prevent registration of the
  2070. environment and server variables into the global scope (Zeev)
  2071. - Renamed gpc_globals INI directive to register_globals (Zeev)
  2072. - Introduced variables_order that deprecates gpc_order, and allows control
  2073. over the server and environment variables, in addition to GET/POST/Cookies
  2074. (Zeev)
  2075. - new function cpdf_set_document_limits() (Uwe)
  2076. - Applied safe-mode patch to popen(). (Patch by Kristian K�hntopp)
  2077. - str_repeat() now returns correct length. (Thies)
  2078. - Don't assume libz and libpng are installed for the GD checks (Rasmus)
  2079. - Implemented support for <boolean> and <null> types according
  2080. to WDDX version 1.0 (Andrei)
  2081. - Made var_dump()/serialize()/unserialize() NULL aware. (Thies)
  2082. - Added new NULL constant (Zeev, Zend Engine)
  2083. - Fixed -c support in the standalone CGI binary (Zeev)
  2084. - Increased PHP's performance by 5-15% using a new memory cache (Andi & Zeev,
  2085. Zend Engine)
  2086. - Improved the php.ini reader to support constants and bitwise operators (Zeev)
  2087. - Fixed strrev() to no longer modify arg1. (Thies)
  2088. - Fixed buffer overruns in iptcembed(). (Thies)
  2089. - Fixed a bug in ODBC error reporting (Zeev)
  2090. - Added PHP_Logo_GUID() and Zend_Logo_GUID() functions, that return the GUIDs
  2091. of the PHP and Zend logos used in phpinfo() (Zeev)
  2092. - Added GNU Pth support (Sascha, TSRM library)
  2093. - Removed select(), fd_set() and fd_isset() - will be reimplemented soon! (Thies)
  2094. - Improved Win32 performance significantly by using different mutexes (Zeev,
  2095. TSRM library)
  2096. - Made quotemeta() and preg_quote() binary-safe. (Andrei)
  2097. - Added UDP support in fsockopen(). (Evan)
  2098. - Added --disable-pear option (Andrei)
  2099. - Renamed libzend repository to Zend (Zeev)
  2100. - Added support for thttpd (Sascha)
  2101. - Added session.cache_limiter and cache_expire options (Sascha)
  2102. - Restored the PHP_VERSION and PHP_OS constants (Zeev)
  2103. - Added get_loaded_extensions(), extension_loaded(), and
  2104. get_extension_funcs() functions. (Andrei)
  2105. - Added date/time stamping to PHP error log file. (Andrei, Joey)
  2106. - Added is_subclass_of() function (Andrei, Zend Engine)
  2107. - Implemented count_chars(). (Thies)
  2108. - Added class_exists() function (Andrei, Zend Engine)
  2109. - Made strspn() and strcspn() binary-safe. (Andrei)
  2110. - Added array_multisort() function. (Andrei)
  2111. - Made pageinfo.c thread-safe (Sascha)
  2112. - Made implode() binary-safe (Andrei)
  2113. - Made strstr(), stristr(), and ucwords() binary-safe() (Andrei)
  2114. - Made strtoupper(), strtolower(), substr_replace() binary-safe. (Andrei)
  2115. - Fixed a crash in the Apache syntax highlighting mode (Zeev)
  2116. - Report all ODBC error's not just the one on the top of the stack (lurcher)
  2117. - OCI8 now returns NULL values in LONG columns correct. (Thies)
  2118. - Added support for a C-like assert() function. (Thies)
  2119. - Added CyberCash support. (Evan)
  2120. - Made explode() binary-safe. (Thies)
  2121. - Made strpos() binary-safe. (Thies)
  2122. - Added XML_Set_Object() function, now you can use the XML-Parser from
  2123. within an object. (Thies)
  2124. - Session vars are now decoded into $HTTP_STATE_VARS[] array and the
  2125. globals, depending on track_vars and gpc_globals settings (Andrei)
  2126. - Added get_used_files() function - returns a hash mapping the use()'d files
  2127. to their full path (Zeev)
  2128. - PHP 4 scripts will now obey the max_execution_time setting and actually
  2129. time out (Rasmus)
  2130. - Added configure command to phpinfo() output (Stig)
  2131. - Added optional socket path to the mysql_?connect() functions (Rasmus)
  2132. - Made mysql and gd work as shared extensions again (Stig)
  2133. - Make the global GET/POST/Cookie variables and their $HTTP_*_VARS[] counterparts
  2134. be references to each other (Zeev)
  2135. - Added support for the 'use' keyword - behaves like 'require', but will not
  2136. use the same file more than once (Andi & Zeev, Zend Engine)
  2137. - Added check to see if a persistent connection is still valid with the
  2138. ODBC interface before reusing (nick@easysoft.com)
  2139. - Added DBMaker support (patch by Pax Tsai <paxtsai@lion.syscom.com.tw>)
  2140. - Renamed "PECL" to "PEAR" (PHP Extension and Add-on Repository) (Stig)
  2141. - buildconf now uses build.mk (Stig)
  2142. - Disable symlinks to urls (Rasmus)
  2143. - Informix driver now reflects version of ESQL/C used (Danny)
  2144. - Modified session_register() to take variable number of arguments (Andrei)
  2145. - Fixed file descriptor leak in thread safe mode (Zeev, Zend Engine)
  2146. - Added select(), fd_set() and fd_isset() (Evan)
  2147. - cpdf support has been ported from php3, needs ClibPDF 2.x (Uwe)
  2148. - Fixed a leak when using automatic output buffering (Zeev)
  2149. - Introduced PECL - PHP Extension and Code Library
  2150. (prounounced "pickle") (Stig)
  2151. - Fixed inconsistencies in the implementation of here-docs (Andi & Zeev, Zend
  2152. library)
  2153. - Fixed a problem with constant class-member initializations (Andi & Zeev,
  2154. Zend Engine)
  2155. - Fixed float-compare in min(),max(),a[r]sort(),[r]sort() (Thies)
  2156. - Implemented get_html_translation_table() function (Thies)
  2157. - Implemented array_flip() function. Returns input-array with key, value
  2158. flipped (Thies)
  2159. - Added Berkeley DB3 support in DBA (Sascha)
  2160. - Implemented 2-Arg version of strtr($str,$translation_array). This can be used
  2161. to revert what htmlspecialchars() did (Thies)
  2162. - Fixed mem-overwrite in XML_Parse_Into_Struct (Thies)
  2163. - Added substr_replace() function (Andrei)
  2164. November 16 1999, Version 4.0 Beta 3
  2165. - ucfirst()/ucwords() no longer modify arg1 (Thies)
  2166. - Fixed strtr() not to modify arg1 (Thies)
  2167. - Added Win32 build files for Informix driver and make it
  2168. compile with ZTS (danny)
  2169. - Added tmpfile() function (Stig)
  2170. - Upgraded regex library to alpha3.8 (Sascha)
  2171. - Fixed selecting nested-tables in OCI8. (Thies)
  2172. - RFC-854 fix for internal FTP-Code. Commands have to end in "\r\n" (Thies)
  2173. - Fixed OpenLink ODBC support (Stig)
  2174. - min(),max(),a[r]sort(),[r]sort(),k[r]sort() now work consistent with the
  2175. language-core. (Thies)
  2176. - tempnam() now uses mkstemp() if available (Stig)
  2177. - serialize() and var_dump() now honor the precision as set in php.ini
  2178. for doubles. (Thies)
  2179. - Improved the Win32 COM module to support [out] parameters (Boris Wedl)
  2180. - Fixed garbage returned at the end of certain Sybase-Columns (Thies)
  2181. Patch submitted by: neal@wanlink.com
  2182. - Added Microsoft SQL Server module for Win32 (Frank)
  2183. - Added support for forcing a variable number of internal function arguments
  2184. by reference. (Andi & Zeev, Zend Engine)
  2185. - Implemented getprotoby{name,number} (Evan)
  2186. - Added array_pad() function. (Andrei)
  2187. - Added new getservby{name,port} functions. (Evan)
  2188. - Added session.cookie_path and session.cookie_domain (Sascha)
  2189. - Continue processing PHP_INI_SYSTEM knownDirectives after extension=
  2190. (Sam Ruby)
  2191. - Enable IBM DB2 support - Tested against DB2 6.1 UDB on Linux (Rasmus)
  2192. - Added new str_repeat() function. (Andrei)
  2193. - Output-Buffering system is now Thread-Safe. (Thies)
  2194. - implemented OCI8 $lob->WriteToFile() function - very useful for streaming
  2195. large amounts of LOB-Data without to need of a huge buffer. (Thies)
  2196. - Added session.use_cookies option (Sascha)
  2197. - Added getcwd() function. (Thies)
  2198. - XML_Parse_Into_Struct no longer eats data. (Thies)
  2199. - Fixed parse_url('-') crash. (Thies)
  2200. - added === operator support. (Andi & Thies, Zend Engine)
  2201. - unserialize() now gives a notice when passed invalid data. (Thies)
  2202. - Fixed shuffle() so that it no longer breaks on Solaris. (Andrei)
  2203. - Added is_resource(), is_bool() functions. (Thies)
  2204. - Cleaned up File-Module (Thies)
  2205. - Upgraded math-funtions to use new Zend function API (Thies)
  2206. - Fixed zombie problem in shell_exec() and $a = `some_command`
  2207. constructs. (Thies)
  2208. - Thies introduced ZEND_FETCH_RESOURCE2 (Danny).
  2209. - Added Informix driver to list of maintained extensions. (Danny).
  2210. - Informix driver : Changed ifx.ec to use the new high-performance
  2211. ZEND API. (Danny)
  2212. - IXF_LIBDIR environment variable specifies alternate Informix library
  2213. path for configure (Danny).
  2214. - Fixed gmmktime() so that the following should always be true:
  2215. gmmktime([args]) == mktime([args]) + date('Z', mktime([args])) (Jouni)
  2216. - setlocale doesn't anymore screw up things if you forgot to change it back
  2217. to the original settings. (Jouni)
  2218. - Switched to new system where ChangeLog is automagically updated from commit
  2219. messages. NEWS file is now the place for public announcements. (Andrei)
  2220. - Fixed refcount problem in XML module. (Thies)
  2221. - Fixed crash in HTTP_RAW_POST_DATA handling (Thies)
  2222. - You can use resources as array-indices again (Thies, Zend Engine)
  2223. - Fixed pg_fetch_array() with three arguments (Sascha)
  2224. Patch submitted by: brian@soda.berkeley.edu
  2225. - Upgraded a lot internal functions to use new Zend function API (Thies)
  2226. - fdf support ported; not completely tested with latest version 4.0 for
  2227. glibc (Uwe)
  2228. - OCI8 connections are now kept open as long as they are referenced (Thies)
  2229. - Cleaned up Directory-Module (Thies)
  2230. - Small fix in Ora_Close (Thies)
  2231. - Ported range() and shuffle() from PHP 3 to PHP 4 (Andrei)
  2232. - Fixed header("HTTP/..."); behaviour (Sascha)
  2233. - Improved UNIX build system. Now utilizes libtool (Sascha)
  2234. - Upgrade some more internal functions to use new Zend function API. (Thies,
  2235. Zend Engine)
  2236. - Fixed backwards incompatibility with ereg() (Thies)
  2237. - Updated Zend garbage collection with a much more thorough method.
  2238. (Andi, Zend Engine)
  2239. - Added the ability to use variable references in the array() construct.
  2240. For example, array("foo" => &$foo). (Andi, Zend Engine)
  2241. - Added array_reverse() function (Andrei)
  2242. - Some more XML fixes/cleanups (Thies)
  2243. - Updated preg_replace() so that if any argument passed in is an array
  2244. it will make a copy of each entry before converting it to string so that
  2245. the original is intact. If the subject is an array then it will preserve
  2246. the keys in the output as well (Andrei)
  2247. - Updated OCI8 to use the new high-performance Zend function API. (Thies)
  2248. - Configure speedup (Stig)
  2249. - Fixed LOB/Persistent-Connection related OCI8-Crash (Thies)
  2250. - Generalized server-API build procedure on UNIX (Stig)
  2251. - Added '--disable-rpath' option (Sascha)
  2252. - Added AOLserver SAPI module (Sascha)
  2253. - Fixed XML Callbacks. (Thies)
  2254. - Updated ODBC to use the new high-performance Zend function API (kara)
  2255. - Updated zlib to use the new high-performance Zend function API. (Stefan)
  2256. - Updated preg_split() to allow returning only non-empty pieces (Andrei)
  2257. - Updated PCRE to use the new high-performance Zend function API (Andrei)
  2258. - Updated session, dba, mhash, mcrypt, sysvshm, sysvsem, gettext modules to use
  2259. the new high-performance Zend function API (Sascha)
  2260. - Extended var_dump to handle resource type somewhat (Andrei)
  2261. - Updated WDDX to use the new high-performance Zend function API (Andrei)
  2262. - Updated XML to use the new high-performance Zend function API. (Thies)
  2263. - Updated Oracle to use the new high-performance Zend function API. (Thies)
  2264. - Improved the performance of the MySQL module significantly by using the new
  2265. high-performance Zend function API. (Zeev)
  2266. - Added support for the Easysoft ODBC-ODCB Bridge (martin@easysoft.com)
  2267. - Fixed bug in odbc_setoption, getParameter call incorrect (martin@easysoft.com)
  2268. - Ora_Fetch_Into now resets the returned array in all cases (Thies)
  2269. - Fixed NULL-Column problem in Oracle-Driver (Thies)
  2270. - Added extra metadata functions to ODBC, SQLTables etc (nick@easysoft.com)
  2271. - Fixed SEGV in mcal make_event_object() and
  2272. typo in mcal_list_alarms() (Andrew Skalski)
  2273. - Fixed Ora_PLogon (Thies)
  2274. - Resourcified Oracle (Thies)
  2275. - Implemented object serialization/deserialization in WDDX (Andrei)
  2276. - Added krsort() function (Thies)
  2277. - Added func_num_args(), func_get_arg() and func_get_args() for standard
  2278. access to variable number of arguments functions (Zeev)
  2279. - Added FTP support (Andrew Skalski)
  2280. - Added optional allowable_tags arguments to strip_tags(), gzgetss() and
  2281. fgetss() to allow you to specify a string of tags that are not to be
  2282. stripped (Rasmus)
  2283. - Upgraded var_dump() to take multiple arguments (Andrei)
  2284. - Resourcified XML (Thies)
  2285. - Fixed a memory leak in the Apache per-directory directives handler (Zeev)
  2286. - Added array_count_values() function. (Thies)
  2287. - snmp, pgsql, mysql and gd modules can be built as dynamically loaded
  2288. modules (Greg)
  2289. - OCI8 fix for fetching empty LOBs (Thies)
  2290. - Added user-level callbacks for session module (Sascha)
  2291. - Added support for unknown POST content types (Zeev)
  2292. - Added "wddx" serialization handler for session module (Sascha)
  2293. (automatically enabled, if you compile with --with-wddx)
  2294. - Fixed unserializing objects (Thies)
  2295. - PHP 4.0 now serializes Objects as 'O' (not understood by PHP 3.0), but
  2296. unserializes PHP 3.0 serialized objects as expected. (Thies)
  2297. - Made serialize/unserialize work on classes. If the class is known at
  2298. unserialize() time, you'll get back a fully working object! (Thies)
  2299. - Reworked preg_* functions according to the new PCRE API, which also made
  2300. them behave much more like Perl ones (Andrei)
  2301. - Made it possible to specify external location of PCRE library (Andrei)
  2302. - Updated bundled PCRE library to version 2.08 (Andrei)
  2303. - count()/is_array/is_object... speedups. (Thies)
  2304. - OCI8 supports appending and positioning when saving LOBs (Thies)
  2305. - Added metaphone support (Thies)
  2306. - OCI8 doesn't use define callbacks any longer. (Thies)
  2307. - OCI8 Driver now supports LOBs like PHP 3.0. (Thies)
  2308. - var_dump now dumps the properties of an object (Thies)
  2309. - Rewrote the GET/POST/Cookie data reader to support multi-dimensional
  2310. arrays! (Zeev)
  2311. - Renamed allow_builtin_links to expose_php (defaults to On). This directive
  2312. tells PHP whether it may expose its existence to the outside world, e.g.
  2313. by adding itself to the Web server header (Zeev)
  2314. - Added support for transparent session id propagation (Sascha)
  2315. - Made WDDX serialize object properties properly (Andrei)
  2316. - Fixed WDDX mem leak when undefined variable is passed in
  2317. for serialization (Andrei)
  2318. - Added session_unset() function (Andrei)
  2319. - Fixed double session globals shutdown crash (Andrei)
  2320. - Fixed crash related to ignore_user_abort ini entry (Andrei)
  2321. - Added support for external entropy sources for session id creation
  2322. (on Unices /dev/random and /dev/urandom) (Sascha)
  2323. - Added gpc_globals variable directive to php.ini. By default it is On, but
  2324. if it is set to Off, GET, POST and Cookie variables will not be inserted
  2325. to the global scope. Mostly makes sense when coupled with track_vars (Zeev)
  2326. - Added versioning support for shared library (Sascha)
  2327. This allows concurrent use of PHP 3.0 and PHP 4.0 as Apache modules. See
  2328. the end of the INSTALL file for more information.
  2329. - Added second parameter to array_keys which specifies search value
  2330. for which the key should be returned (Andrei)
  2331. - Resourcified Informix driver (Danny)
  2332. - New resource handling for odbc, renamed to php_odbc.[ch]
  2333. - Make set_time_limit() work on Unix (Rasmus)
  2334. - Added connection handling support (Rasmus)
  2335. - Improved the Sybase-CT module to make use of resources (Zeev)
  2336. - Improved the mSQL module to make use of resources (Zeev)
  2337. - Changed mysql_query() and mysql_db_query() to return false in case of saving
  2338. the result set data fails (Zeev)
  2339. - Improved the resource mechanism - resources were not getting freed as soon
  2340. as they could (Zeev)
  2341. - Added shared memory module for session data storage (Sascha)
  2342. - Fixed session.auto_start (Sascha)
  2343. - Fixed several problems with output buffering and HEAD requests (Zeev)
  2344. - Fixed HTTP Status code issue with ISAPI module (Zeev)
  2345. - Fixed a problem that prevented $GLOBALS from working properly (Zeev, Zend
  2346. library)
  2347. - Ported newest GetImageSize (Thies)
  2348. - Added session compile support in Win32 (Andi)
  2349. - Added -d switch to the CGI binary that allows overriding php.ini values
  2350. from the command line (Zeev)
  2351. - Fixed a crash that would occur if wddx_deserialize did not receive
  2352. a valid packet (Andrei)
  2353. - Fixed a bugglet when redefining a class at run-time (Andi, Zend Engine)
  2354. - Fixed sem_get() on AIX (Sascha)
  2355. - Fixed fopen() to work with URL's in Win32 (Andi & Zeev)
  2356. - Fixed include_path for Win32 (Andi, Zend Engine)
  2357. - Fixed bug in ISAPI header sending function (Charles)
  2358. - Fixed memory leak when using undefined values (Andi & Zeev, Zend Engine)
  2359. - Added output_buffering directive to php.ini, to enable output buffering
  2360. for all PHP scripts - default is off (Zeev).
  2361. - Fixed some more class inheritance issues (Zeev, Zend Engine)
  2362. - Fixed Apache build wrt to shared modules on FreeBSD/Linux (Sascha)
  2363. - Added session.extern_referer_chk which checks whether session ids were
  2364. referred to by an external site and eliminates them (Sascha)
  2365. - Improved session id generation (Sascha)
  2366. - Improved speed of uniqid() by using the combined LCG and removing
  2367. the extra usleep() (Sascha)
  2368. - Introduced general combined linear congruential generator (Sascha)
  2369. - Made ldap_close back into an alias for ldap_unbind (Andrei)
  2370. - OciFetchInto now resets the returned array in all cases (Thies)
  2371. - Fixed mysql_errno() to work with recent versions of MySQL (Zeev)
  2372. - Fixed a problem with define() and boolean values (Zeev)
  2373. - Fixed inclusion of gd/freetype functions (Sascha)
  2374. - Fixed persistency of MHASH_* constants (Sascha)
  2375. - Oracle is now ZTS-Safe (Thies)
  2376. - Fixed flushing of cached information to disk in DBA's DB2 module (Sascha)
  2377. - OCI8 is now ZTS-Safe (Thies)
  2378. - Fixed is_writeable/is_writable problem; they are both defined now (Andrei)
  2379. - Imported PHP 3.0 diskfreespace() function (Thies)
  2380. - Fixed thread-safety issues in the MySQL module (Zeev)
  2381. - Fixed thread-safe support for dynamic modules (Zeev)
  2382. - Fixed Sybase CT build process (Zeev)
  2383. August 9 1999, Version 4.0 Beta 2
  2384. - Fixed a problem when sending HTTP/1.x header lines using header() (Zeev)
  2385. - Win32 builds now include the ODBC module built-in (Zeev)
  2386. - Fixed SYSV-SHM interface (Thies).
  2387. - Updated hyperwave module, made it thread safe
  2388. - Updated pdflib module, version 0.6 of pdflib no longer supported
  2389. - Updated fdf module
  2390. - Built-in phpinfo() links are now turned off by default. They can be turned
  2391. on using the allow_builtin_links INI directive (Zeev)
  2392. - Changed phpinfo() to list modules that have no info function (Zeev)
  2393. - Modified array_walk() function so that the userland callback is passed
  2394. a key and possible user data in addition to the value (Andrei)
  2395. - Fixed ldap_search(), ldap_read() and ldap_list() (Zeev)
  2396. - Fixed Apache information in phpinfo() (sam@breakfree.com)
  2397. - Improved register_shutdown_function() - you may now supply arguments that
  2398. will be passed to the shutdown function (Zeev)
  2399. - Improved call_user_func() and call_user_method() - they now support passing
  2400. arguments by reference (Zeev)
  2401. - Fixed usort() and uksort() (Zeev)
  2402. - Fixed md5() in the Apache module (Thies)
  2403. - Introduced build process for dynamic modules (Stig)
  2404. - Improved ISAPI module to supprt large server variables (Zeev)
  2405. - Imported PHP 3.0 fixes for problem with PHP as a dynamic module and Redhat
  2406. libc2.1 in zlib module (Stefan)
  2407. - Fixed sybase_fetch_object() (Zeev)
  2408. - Made the IMAP module work with PHP 4.0 (Zeev)
  2409. - Fixed a problem with include()/require() of URLs (Sascha, Zeev)
  2410. - Fixed a bug in implode() that caused it to corrupt its arguments (Zeev)
  2411. - Added get_class($obj), get_parent_class($obj) and method_exists($obj,"name")
  2412. (Andi & Zeev)
  2413. - Fixed various inheritance problems (Andi & Zeev, Zend Engine)
  2414. - Children now inherit their parent's constructor, if they do not supply a
  2415. constructor of their own.
  2416. - Fixed runtime inheritance of classes (parent methods/properties were
  2417. overriding their children) (Zeev, Zend Engine)
  2418. - Fixed backwards incompatibility with the "new" operator (Andi, Zend Engine)
  2419. - Fixed bugs in uksort() and ksort() sort ordering (Andrei)
  2420. - Fixed a memory leak when using assignment-op operators with lvalue of type
  2421. string (Zeev, Zend Engine)
  2422. - Fixed a problem in inheritance from classes that are defined in include()d
  2423. files (Zeev, Zend Engine)
  2424. - Fixed a problem with the PHP error handler that could result in a crash
  2425. on certain operating systems (Zeev)
  2426. - Apache php_flag values only recognized 'On' (case sensitive) - changed
  2427. to case insensitive (Zeev)
  2428. - Fixed a memory leak with switch statement containing return statements
  2429. (Andi & Zeev, Zend Engine)
  2430. - Fixed a crash problem in switch statements that had a string offset
  2431. as a conditional (Andi & Zeev, Zend Engine)
  2432. - Imported PHP 3.0 fixes for rand() and mt_rand() (Rasmus)
  2433. - Added function entries for strip_tags() and similar_text() (Andrei)
  2434. - Fixed a bug in WDDX that would cause a crash if a number was passed in
  2435. instead of a variable name (Andrei)
  2436. - Ported strtotime() function from PHP 3.0 (Andrei)
  2437. - Merged in gdttf stuff from PHP 3.0 (Sascha)
  2438. - buildconf now checks your installation (Stig)
  2439. - XML module now built dynamically with --with-xml=shared (Stig)
  2440. - Added a check for freetype.h - fixed build on RedHat 6.0 (Zeev)
  2441. - Fixed array_walk() to work in PHP 4.0 (Andrei)
  2442. - Ported all remaining date() format options from PHP 3.0 (Andrei)
  2443. - $php_errormsg now works (Andrei)
  2444. - Added locale support for Perl Compatible Regexp functions (Andrei)
  2445. - Informix module ported (Danny)
  2446. - Removed --with-shared-apache (Sascha)
  2447. - Added patch for reverse lookup table in base64_decode (Sascha)
  2448. Submitted by bfranklin@dct.com
  2449. - Merged in PHP 3.0 version of str_replace (Sascha)
  2450. - Added DBA module (Sascha)
  2451. - Added session id detection within REQUEST_URI (Sascha)
  2452. - Merged in HP-UX/ANSI compatibility switch from PHP 3.0 (Sascha)
  2453. - Fixed rpath handling for utilitites built during Apache build (Sascha)
  2454. - Added missing E_ error level constants (Zeev, Zend Engine)
  2455. - Fixed a bug in sending multiple HTTP Cookies under Apache (Zeev)
  2456. - Fixed implicit connect on the MySQL, mSQL, PostgreSQL and Sybase
  2457. modules (Zeev)
  2458. - Gave PHP 4.0's SNMP extension all the functionality of PHP 3.0.12 (SteveL)
  2459. July 19 1999, Version 4.0 Beta 1
  2460. - First public beta of PHP 4.0