After a very long QA process, PHP 4.0.5 has finally been officially 
released.  This is a maintenance version, with a lot of bug fixes from PHP 
4.0.4pl1.  Other than that, there aren't too many new features in this 
release, so it's mostly recommended for people that were experiencing one 
(or more) of the bugs that were fixed.  Note that PHP 4.0.6 is also planned 
for the near future, featuring mostly bug fixes;  This may affect your 
upgrade considerations.

Notable features:
- High performance output compression support and improved output buffering
- Experimental FastCGI module
- A lot of PEAR work
- Significantly improved thread safety (users of multithreaded servers 
should definitely upgrade if they have earlier versions of PHP)

Full list of changes is available at, 
and is also attached at the end of this letter.  Thanks goes to the PHP QA 
team, which worked a lot to make sure that this release works as well as 
expected, and beyond.  Special thanks to Mr. J, which managed to survive 
the long and thrilling QA process without getting a heart attack :)


30 Apr 2001, Version 4.0.5
- IMPORTANT: removed /F modifier handling from preg_replace(). Instead
   one should use new preg_replace_callback() function. (Andrei)
- Added new php.ini directive: arg_separator.input which is used to tell
   PHP which characters are considered as argument separators in URLs.
   Renamed php.ini directive: arg_separator -> arg_separator.output (Jani)
- Added FastCGI SAPI module. (Ben Mansell)
- Added array_reduce(), which allows iterative reduction of an array
   to a single value via a callback function. (Andrei)
- The imageloadfont function of the gd extension should be not platform
   dependent after this fix. ([EMAIL PROTECTED])
- Fixed a compatibility problem in some file functions (fgets, fputs, fread,
   fwrite). The ANSI standard says that if a file is opened in read/write
   mode, fseek() should be called before switching from reading to writing
   and vice versa. ([EMAIL PROTECTED])
- Fixed argument checking for call_user_func* functions and allowed
   specifying array($obj, 'method') syntax for call_user_func_array. (Andrei)
- Fixed parent::method() to also work with runtime bindings.
   (Zeev, Zend Engine)
- Implemented high-performance zlib-based output compression - see
   zlib.output_compression INI directive. (Zeev)
- Improved ob_gzhandler() to support chunked output buffering - it's
   recommended to use it with 4KB chunks. (Zeev)
- Fixed chunked output buffering. (Zeev)
- Forced call_user_method() and call_user_method_array() to take the
   object argument by reference. (Andrei)
- Fixed binding of ROWIDs in OCI8. (Thies)
- Added PEAR/Cache as a generic Caching System. (Sebastian, PEAR/Cache)
- Added IMAP quota support (imap_set_quota, imap_get_quota), enabled/added via
   c-client2000. (kalowsky)
- Upgraded PCRE to version 3.4. (Andrei)
- Added array_search which works similar to in_array but returns
   the key instead of a boolean. ([EMAIL PROTECTED])
- Fixed pgsql transaction support. (Stig, PEAR/DB)
- Added new object VARIANT() to encapsulate values for use with
   the COM and DOTNET module. Therefore it is now possible to pass
   values by reference, convert php values to extended variant types (currency,
   date, idispatch, iunknown, ...) and define the codepage that should
   be used for unicode - conversion.
- Improved overall speed of IRCG, added URL handling to message scanner.
- Fixed some modules to allow using output-buffering. (Thies)
- Added the chroot() function. (Derick)
- PostgreSQL now does a rollback at the end of a request on every
   persistent connection. This is done by doing an "empty" transaction
   on the connection. This was advised by someone from the PostgreSQL
   core-team. (Thies)
- Fixed PostgeSQL pg_connect() bug. We would sometimes close the default
   link by accident. (Patch by: [EMAIL PROTECTED])
- Improved OCI8 dead-session detection. (Patch by: George Schlossnagle)
- Fixed get_meta_tags() multiline bug #4556. (Sean)
- Prefer random() over *rand48(). (JimJag)
- Sped up WDDX serialization 2x. (Andrei)
- Added a new parameter to mail() which appends aditional command line
   parameters to the mail program. (Derick)
- Added Udm_Clear_Search_Limits mnoGoSearch extension function. (gluke)
- Fixed mnogosearch protos. Fixed mnogosearch functions return values.
   A bug with capital letters break search has been fixed. (gluke)
- Static methods can now be called via call_user_method_* functions, e.g.
   call_user_method('method', 'class'), and also array('class', 'method')
   constructs (for array_walk(), for example). (Andrei, Zend Engine)
- microtime() under Windows now returns accurate values. (James)
- Added PREG_SPLIT_DELIM_CAPTURE flag to preg_split() that allows for Perl-like
   functionality of capturing parenthesized delimiter expression. (Andrei)
- Fixed strip_tags() to not strip a lone > character. (Rasmus)
- When using the ob_gzhandler() PHP now automagically also sets the
   Content-Lengh correctly which enables browsers to use the HTTP
   Keep-Alive feature. (Thies)
- Improved handling of preg_replace() /F modifier so that it's possible to
   specify array($obj, 'method') construct as a replacement function. (Andrei)
- Added mysql_get_client_info(), mysql_get_server_info(),
   mysql_get_proto_info(), and mysql_get_host_info() functions. (Sean)
- Major change of the php pdf api. It could break some functions though
   backwards compatibility was tried to maintain. Adding some still
   missing functions as well. (Uwe)
- Added mnoGoSearch extension - (Sergey K)
- Allow URL encoding in DB usernames and passwords. (Stig, PEAR)
- Added raiseError and setErrorHandling methods to PEAR class. (Stig, PEAR)
- Added support for converting images from JPG/PNG on the fly with the GD
   extension, which is usefull for creating dynamic WAP-sites. (Derick)
- Updated ext/mysql/libmysql to version 3.23.32; bug fixes. ([EMAIL PROTECTED])
- Fixed possible crash in all (non-pcre) regex functions. (Thies)
- Improved str_replace() to accept an array for any parameter - similar
   to preg_replace(). (Andrei)
- Fixed extract() to properly prefix numeric keys when EXTR_PREFIX_ALL is
   used. (Andrei)
- Added EXTR_PREFIX_INVALID flag to extract() to automatically prefix
   string keys that do not constitute valid variable names. (Andrei)
- BeOS patch from [EMAIL PROTECTED], modified somewhat by Rasmus.
- Fixed the Apache module to overwrite PATH_TRANSLATED with SCRIPT_FILENAME,
   only if PATH_TRANSLATED is not previously set. (Zeev)
- Fixed crash bug in highlight_string(). (Rasmus)
- Added URL support for getimagesize() function. (Jani)
- Added xslt_set_scheme_handler() function. ([EMAIL PROTECTED])
- Added the pg_lolseek and pg_lotell functions. (Derick)
- Fixed wrong breaking with the wordwrap function. (Derick)
- Fixed 'O' and 'r' flags of date() to have correct sign for timezone
   offset. (Andrei)
- Changed 'Z' flag to date() to always return timezone offset with
   negative sign if it's west of UTC. (Andrei)
- Added the HTML_Processor class which provides common functions for
   processing HTML. (Sterling)
- Added localeconv() and strcoll() functions for localization. (Sean)
- Added the xslt_set_base function. (Sterling)
- Added support for Zeus 3.3.8.
- Added odbc_error() and odbc_errormsg() functions. (Stig)
- New extension for vpopmail -,
   give it a try, but keep in mind that it is not ready for production
   environments. (David Croft, Boian Bonev)
- Added sybase_get_last_message() to the Sybase CT module. (Jan Fedak)
- Made ldap_list(), ldap_read() and ldap_search() do parallel search when
   first parameter is an array of link identifiers. (Stig Venaas)
- Made fopen() of HTTP URL follow redirects, $http_response_header will
   contain all headers with empty string as delimiter. (Stig Venaas)
- Added Console_Getopt class for parsing command-line args. (Andrei, PEAR)
- Added an experimental version of the ZZipLib extension which provides the
   ability to read zip files. (Sterling)
- Allow access to uploaded files in safe_mode. Beware that you can only
   read the file. If you copy it to new location the copy will not have the
   right UID and you script won't be able to access that copy. (Thies)
- Changed extract() to check that prefixed name is a valid one. (Andrei)
- Changed extract() to return the number of variables extracted. (Andrei)
- Added ldap_rename() function. (Stig Venaas)
- Made ldap_set_option() support controls. (Stig Venaas)
- Changed ldap_search() and added functions ldap_parse_result(),
   ldap_first_reference(), ldap_next_reference() and ldap_parse_reference()
   to cope with LDAPv3 stuff like referrals and references. (Stig Venaas)
- Fixed date('r') overflow.
- Made the php.ini path reported in phpinfo() always point to the absolute
   path that was opened. (Zeev)
- Made the INI mechanism thread safe. (Zeev, Zend Engine)
- Changed setlocale() to use LC_* constants. (Jani)
- ctype functions now follow the extension naming conventions. (Hartmut)
- Added iconv() function (using libc or libiconv). (Stig)
- Added ODBC_TYPE constant. (Stig)
- Added the call_user_method_array function which allows you to call a method
   with an arbitrary number of parameters. (Sterling)
- ext/odbc: IBM DB2 patch by Walter Franzini. <[EMAIL PROTECTED]>
- Added extension for the cracklib library. (Alexander Feldman)

Zeev Suraski <[EMAIL PROTECTED]>
CTO &  co-founder, Zend Technologies Ltd.

PHP Development Mailing List <>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to