PHP 3.0 CHANGE LOG ChangeLog ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| January 11, 2000, Version 3.0.14 - Fixed broken GD autoconf check - GIF support was not detected unless libpng and libz were both installed on the system (Rasmus) - Fix safe-mode problem in popen() (Kristian) - Fix safe-mode problem when resource had multiple consecutive /'s (Rasmus) - Remove written permission clause from license January 1, 2000, Version 3.0.13 - Fixed timezone conflict on AIX (Sascha) - Fixed mysql_errno() problem when compiled against MySQL 3.23.x (Rasmus) - Fixed buffer overruns in iptcembed(). (Thies) - OCI8 now returns NULL values in LONG columns correct. (Thies) - Check for broken apxs (Rasmus) - explode() is now binary-safe. (Thies) - strpos() is now binary-safe. (Thies) - Add configure command to phpinfo() output (Stig) - added sketchy support for GNU recode 3.5 (Kristian) - Added tmpfile() function (Stig) - fixed trim(), chop(), ltrim(), etc. to remove NULL characters as well. (Colin Viebrock) - krsort() added, although someone forgot to mention it ... (Thies) - Upgraded regex library to alpha3.8 (Sascha) - RFC-854 fix for internal FTP-Code. Commands have to end in "\r\n" (Thies) - GD-1.7.x detection (Rasmus) - added patch to functions/mime.c so that form submit with lynx and old IE works properly (closes bug #2362, code by ash@ash.de) - tempnam() now uses mkstemp() if available (Stig) - serialize()/var_dump() now honor the precision set in php3.ini for double-values. (Thies) - Add mysql_change_user() function (Rasmus) - Fixed garbage returned at the end of certain Sybase-Columns (Thies) Patch submitted by: neal@wanlink.com - XML_Parse_Into_Struct() no longer eats data. (Thies) - Added portable access to stdio streams by using the "php://stream-name" syntax (Sascha) - Fixed zombie problem when using backquotes. eg: $x = `ls /`; (Thies) - Locale settings are restored correctly at request end if they were changed in the script (Jouni) - Fixed wrong values returned by gmmktime() and its inconsistent behaviour. Now gmmktime([args]) == mktime([args]) + date('Z', mktime([args])) should always be true (Jouni) - Proper handling of the slightly different behavior of Fdf Toolkit 4.0 (U. Steinmann) - Fixed LOB/Persistent-Connection related OCI8-Crash (Thies) - Added a function for applying a gamma correction to a GD image Example: imagegammacorrect($im,1.8,2.2); (markonen) - Added a function for applying a gamma correction to a HTML color value Example: $maccolor = gamma_correct_tag("#cccccc",2.2,1.8); (markonen) - Ora_Fetch_Into now resets the returned array in all cases (Thies) - Fixed SEGV in mcal make_event_object() and typo in mcal_list_alarms() (Andrew Skalski) - Fixed memory leak in pdf_open_memory_image() (Uwe Steinmann) - Added FTP support (Andrew Skalski) - Added optional allowable_tags arguments to strip_tags(), gzgetss() and fgetss() to allow you to specify a string of tags that are not to be stripped (Rasmus) - Fix longstanding Apache .conf nested directive problem (Rasmus) - OCI8 fix for fetching empty LOBs (Thies) - OCI8 supports appending and positioning when saving LOBs (Thies) - Added Mcal support (Mark Musone) - OCI8 doesn't use define callbacks any longer. (Thies) - Safe-Mode fix for oci8 savefile() function. (Thies) - Added ldap_get_values_len function (Stig Venaas) - Added more functions to posix module (Kristian). - Close loophole that allowed virtual() to be used on a PHP file without an error (Ken Coar) - Add versioning support for shared library (Sascha) - Fix bug with '%' in error_log() strings when run as Apache module (Ken Coar) - Return false from mysql_query() and mysql_db_query() in case saving the result set data fails (Zeev) - Make --with-apache --with-xml pick up Apache-bundled expat lib (Rasmus) - Carry special Apache CFLAGS into PHP build for apxs build This should fix any PHP/mod_ssl compile issues (Rasmus) - Fixed a crash that would occur if wddx_deserialize did not receive a valid packet (Andrey) - Fixed sem_get() on AIX (Sascha) - Removed --with-shared-apache to avoid problems with Apache 1.3.9 (Sascha) - Improved speed of uniqid() by using the combined LCG and removing the extra usleep() (Sascha) - Introduced general combined linear congruential generator (Sascha) - OciFetchInto now resets the returned array in all cases (Thies) - Fixed flushing of cached information to disk in DBA's DB2 module (Sascha) - DiskFreeSpace() fix (Thies) - pdflib 2.01 support (Uwe Steinmann) - fixed mem-leak in sysv-shm (Thies) - Add IMSP module (Chuck Hagenbuch) - Add gd-1.6.x PNG functions (Rasmus from drew@elysium.ltd.uk) - Fix [s]printf 0-padding issues (Rasmus) - Fix a crash bug in number_format(), in case of very large numbers (Zeev) July 28, 1999, Version 3.0.12 - gmktime/mktime DST fix (RL and Jim) - Add imap_search (Chuck Hagenbuch) - Added locale support for Perl Compatible Regexp functions (Andrey) - fix crash on invalid URLs in fopen wrappers (Sascha) - Add support for gd1.6 (disables the ImageCreateFromGif and ImageGif functions because gd1.6 no longer supports GIF format files) (Jim) - Fixed popen and pclose functions on Windows. (Jim) - Fixed subprocess creation on Windows when used with IIS (Jim, Dave Cramer) - Support for Swatch(r) Beat(tm), also known as Internet Time. Use by including "B" in the date() or gmdate() format string. (markonen) - added gmstrftime() (like strftime() but prints out in GMT not local time) (David Sklar) - A hack to allow 4bit antialiasing by modifying Freetype2 source (markonen) - Initial Freetype2 support. You need to use the 1.2 compatibility API for now.. (markonen) - added strtotime() function from with some modifications (Andrey) - fix some problems in the socket buffering system (Sascha) - allow subsecond precision in timeout parameter to fsockopen (Sascha) - OCI8 - got rid of most Callback-Code (there's a bug in the Oracle Client-Libraries). (Thies) - OCI8 - added OCISetPrefetch($stmt,$rows) for automatic prefetching of data. (Thies) - make buildable on OS/2 (Brian Havard ) - added Chad Cunningham's patches for Mac OS X Server compatibility (markonen) - added ldap_error(), ldap_errno() and ldap_err2str() functions (kk) - fix --with-shared-apache (Sascha) NOTE: Use of this is deprecated. Refer to INSTALL.DSO instead. Future releases do not support this option. - support for accessing the raw POST data when its content-type isn't already understood by PHP (Jim) - fix pgsql_fetch_array/pgsql_fetch_object (Sascha) - detect missing getrlimit function (Jim Jag.) - fix diskfreespace() on Windows post-OSR2 again (Jim) - added Chuck Hagenbuch's imap_getmailboxes(), imap_getsubscribed(), and imap error queues; added preliminary support for persistent IMAP connections. June 27, 1999, Version 3.0.11 - detect missing getpgid function, fix posix_getsid (Jim) - fix diskspacefree() on Win95 pre-OSR2 (Jim) - fix APXS argument order (Sascha) - decrease lexer memory footprint (see #1600) (alanc@soar.berkeley.edu, Sascha) - add dbase_replace_record() (Greg , Sascha) - bringing preg_split() behavior in line with split() (Andrey) - fix APXS build on AIX (Rasmus) June 25, 1999, Version 3.0.10 - fix base64_decode to match RFC 2045 semantics (Sascha & bfranklin@dct.com) - fix potential segfault in tempnam() (Sascha) - fix buffer overruns in dbase_get_record() (Sascha) - workaround for negative 1-digit numbers not returned correct via OCI8 (Thies) - fix APXS linking wrt to static libraries (Sascha) - OCIExecute would sometimes return true on error (Thies) - Made dba_open modes consistant with those from dbm_open. Specifically, 'w' is read/write but will NOT auto-create a non-existant file. To do this, use 'c' which is read/write and auto-create. (Jim Jagielski) - reverted split() to work the same way as pre 3.0.9 versions (Andrey) - moved easter_date and easter_days to the calendar extension (Jim) - fix VPATH APXS build process (Sascha) - make workaround for UCD SNMP deallocate problem optional (Sascha) (see the documentation for a more verbose description) - make fgetcsv() understand multi-line fields and embedded quotes (RL & Nick Talbott) - Add extension_loaded() function (Jim) - fix URL wrapper functions to play nicely with the socket code (Sascha) - fix persistent definitions of constants in the mcrypt module (Sascha) - Fix gmmktime() problems (RL and Cole Tuininga) - Added support for "localhost:/path/to/socket" syntax for mysql_connect (Thanks to Orion Poplawski .) - Added support for file-upload arrays and put file-upload vars into HTTP_POST_VARS (Brian) - fix a string allocation bug introduced in 3.0.8 in the MySQL module (Sascha) - overhaul of Hyperwave module, mainly code clean ups, some bug fixes - fixed a bug in preg_split() that would return nothing if nothing matched (Andrey) - fixed a bug in preg_replace() that had to do with "\\" at the end of the replacement string (Andrey) - open_basedir now resolves symlinks in the configuration (S. Steffann) - added 'Z' flag to date(): timezone offset in seconds (C. Viebrock) - added 'L' flag to date(): 1 if it's a leap year, 0 if it isn't (C. Viebrock) - fixed 't' flag in date() (J. Ahto) - added support for upcoming pdflib 2.0 (U. Steinmann) - mail() on Win32 will only add Date: and From: headers if not supplied by the caller. (F. Kromann) June 6 1999, Version 3.0.9 - added preg_quote() function (Andrey) - fixed OCI8 crash for "Fetch out of sequence". (Thies) - fix deallocation bug in dba's db2 module (Sascha) - add "--enable-dmalloc" option (Sascha) - added workaround for 1-digit numbers not returned correct via OCI8 (Thies) - removed the limit for Ora_GetColumn/Ora_Fetch_Into again. (Thies C. Arntzen) - fix WDDX buffer bug (Sascha) - fixed Ora_GetColumn/Ora_Fetch_Into for LONG/LONG RAW (had to put in the 64K limit again). (Thies C. Arntzen) - added easter_date() function: returns timestamp of midnight on Easter of the given year (valid for years 1970-2037) (Colin Viebrock) - added easter_days() function: returns number of days after March 21 on which Easter falls for a given year (Colin Viebrock) - added 't' option to date() function: returns number of days in the current month (Colin Viebrock) - enabled warning when header() is used after the headers have been sent in in non-debug builds (Jim) - fixed connection and cursor shutdown in oracle-module (this is a fix for the previous fix). (Thies C. Arntzen) - fixed shutting down of statements in OCI8 if user logs-off. (Thies C. Arntzen) - fixed very rare crash in shutdown of oracle-cursors. (Thies C. Arntzen) - added Perl Compatible Regular Expressions support (Andrey Zmievski) - fixed a couple of bugs in split() - cpdf module now supports adding hyperlinks, annotations and outline. Some testing was suggesful. (U. Steinmann) - OCI8 now supports LONG/LONG RAW > 64K (Thies C. Arntzen) - add connection timeout to p?fsockopen (Sascha) - fix socket buffering subsystem for blocking sockets (Sascha) - fix fopen-wrappers.c for url's (danny) - fix fgets() semantics (Sascha) - fix segfault in wddx_serialize_value (Sascha) - add support for using PostScript Type 1 fonts for text in gd.c using T1lib (ftp://sunsite.unc.edu/pub/Linux/libs/graphics/t1lib-0.?.tar.gz) (Jouni Ahto) - add bin2hex (Sascha) - add mhash support (see http://sasweb.de/mhash/ ) (Sascha) May 22 1999, Version 3.0.8 - OCI8 fix for RAW and LONG RAW (Binary data) - sorry currently limited to 64K (Thies C. Arntzen) - Added support for pdf creation lib from FastIO, www.fastio.com This has not been tested, yet (U. Steinmann) - Rewrite socket buffering subsystem (Sascha) - Fix semaphore support on glibc-2.1 systems (Sascha) - Add headers_sent() function which returns true if the http headers have been sent out already - Ora_GetColumn and Ora_Fetch_Into can now return "LONG" and "LONG RAW" columns > 64K (Thies C. Arntzen) - Another str_replace() fix to check for a 0-length haystack (RL) - Add range() and shuffle() functions (Jim) - Fix glibc-2.1.1 (RH6) related crashes (ssb) - Fix md5 on 64-bit platforms (Sascha) - Let exit/die set exit status in CGI version (Sascha) - Make substr() binary-safe (RL) - OCIError can now be called without any arguments to check the error of a failed OCILogon. (Thies C. Arntzen) - added XML_Parse_Into_Struct. Parse XML without using callbacks - This makes life far easier when using the XML-Parser from classes etc. (Thies C. Arntzen) - Small fix in configure.in: doesn't try to add in Informix support anymore if INFORMIXDIR is set but --with-informix not specified (Jouni Ahto) - add mcrypt module (Sascha) - added REFCURSOR (including nested table) handling for OCI8. (Thies C. Arntzen) - finalized new behaviour of hw_modifyobject() (U. Steinmann) - added OCINLogon function (New-Logon) - if you need you "own-private" transaction context. (Thies C. Arntzen) - GetImageSize now also returns the bits/sample ("bits") and samples/pixel ("cannels") -> currently only works for JPEGs (Thies C. Arntzen) - changed parameter evaluation of hw_modifyobject() (see docs) (U. Steinmann) - fixed a sporadic crash when shutting down a request that used the ora_** calls. (Thies C. Arntzen) - Add fgetcsv() function (RL from Nick Talbott) - fixed mem-leak in ora_bind (Thies C. Arntzen) - fixed length of bound variables returned from ora_bind. (Thies C. Arntzen) - Added V1 of DBA (Sascha) - made strtr() binary safe and faster. (Thies C. Arntzen) - added Oracle-OCI8 persistent connections (Thies C. Arntzen) - fixed OCIDefineByName crash. (Thies C. Arntzen) - fixed some NULL-column related problems in OCI8-module. (Thies C. Arntzen) - avoid stripping double slashes when fopen'ing files (Sascha) - sql_regcase() change: only apply to alphabetic characters (Sascha) - add snmprealwalk() (Sascha Schumann) - fix serious bug in strftime() (Sascha Schumann) - fix bug in ucwords() (Sascha Schumann) - optimized fgets() and fread() (ssb) - memory leak in operators.c fixed - socket leak fixed (Sascha Schumann) - Fixed the XML bug that caused garbage behind attributes - Some Informix driver improvements. - PUT method support (RL from mlemos@acm.org) - Add ldap_mod_add(), ldap_mod_del() and ldap_mod_replace() (Gerritt Thomson) - Fix parameter count problem in odbc_setoption() - Replace broken str_replace(). The fix in 3.0.7 was bogus (Sascha Schumann) - Really fix implode() this time. The fix in 3.0.7 was bogus (RL) - Added more options to the date() function: (Colin Viebrock) 'g' - hour, 12-hour format, no leading zeros 'G' - hour, 24-hour format, no leading zeros 'n' - month, numeric, no leading zeros - Make fgetss() slightly smarter (RL) - Add strip_tags() which uses the fgetss state-machine but acts on a string (RL) - Add CRYPT_SALT_LENGTH constant (RL) - added set_file_buffer() (Brian Moon) March 1 1999, Version 3.0.7 - Added pdf_put_image and pdf_execute_image - Initial work on an ImageMagick module - doesn't do anything yet (Thies C. Arntzen) - Make configure script detect Netscape's LDAP SDK automagically - Fixed Oracle-OCI8 module for windows. (Thies C. Arntzen) - Add OCIRowCount function. (Number of affected rows for update-statements) (Thies C. Arntzen) - Add OCIDefineByName function. (Thies C. Arntzen) - Change the behaviour of open_basedir. It's now possible to supply more than one directory. open_basedir paths from parent directories are now automatically inherited. - fix rand() and mt_rand() to make the ranges work correctly - htmlspecialchars() and htmlentities() are now binary safe. (Thies C. Arntzen) - Add extract() function. - Oracle-OCI8 driver now supports BLOBS/CLOBS and IN/OUT binding of local php variables. (Thies C. Arntzen) - Clean up apxs build - Add INSTALL.REDHAT file to walk RedHat users through the install - Added YP/NIS module from Stephanie Wehner - Added optional second argument to mysql_fetch_array(); MYSQL_ASSOC will cause the resulting array to contain the associative indices only, MYSQL_NUM will cause the array to contain the numeric indices only (like mysql_fetch_row()) and MYSQL_BOTH would cause them both to be defined (default). - Backport the Zend debugging memory manager into the PHP 3.0.x tree. - Add function_exists() function. - Add another version of WDDX module (we need to pick a single implementation here) - Fixed includes for iODBC to support both the old and the new LGPL version - Add flock() function - Fix implode() bug - When imploding an array that contained unset() elements it wasn't correctly skipping past these - Add connection_status() function. This returns the raw bitfield which indicates whether the script terminated due to a user abort, a timeout or normally. Note that if ignore_user_abort is enabled, then both the timeout state and the user abort state can be active - Add connection_timeout() function. This one can be called in a shutdown function to tell you if you got there because of a timeout - Add ignore_user_abort() function and .ini/.conf directive of same name - Fix connection abort detection code - It should now work reliably with Apache. Also added a user-level connection_aborted() function designed to let people check whether the user aborted the connection in a user-level shutdown function. - Add pfsockopen() function - Improvements in FreeType support: Macintosh fonts work, and non-antialiased output is considerably cleaner - Fixed checkdate() function, range of valid years is now 0 to 32767 - Make sure XML element attributes have the right character encoding - hw_insertdocument() returns object id now - Add pdf_open() warning in configure and documentation - Add diskfreespace() function (Thies C. Arntzen) - Added aspell support - Iptcparse would sometimes find a wrong tag. (Thies C. Arntzen) - Force var_dump() to output headers - Add optional 3th parameter to ora_fetchinto. (Thies C. Arntzen) - Serialize and var_dump no longer show array elements that have been unset. (Thies C. Arntzen) - Add IptcEmbed() function (can replace an APP13-Marker in a JPEG file) (Thies C. Arntzen) - Add OCI8 module for Windows - Fix bug in pdf_close() function - Add WDDX support (see http://www.wddx.org for more info) - Add similar_text() function - Constructors of parent classes weren't accessible to derived classes (as of 3.0.6). Fixed. - Introduce simple regex compilation cache - Add gettimeofday() function - Add getrusage() function December 24 1998, Version 3.0.6 - Fix GetImageSize() to work with non-standard jpg images - Add Mersenne Twister functions (mt_rand, mt_srand, etc) - Add str_replace() function - Add chunk_split() function - Fixed a bug in the memory limit code, in cases where $php_errormsg was also used. - Add iptcparse() function - Adobe FDF supported - getallheaders() NULL string fix - Add all configuration directives to phpinfo() page - Functions pack() and unpack() rewritten to be binary and buffer overrun safe and behave like the Perl functions for all implemented format codes. - Ensured that msql_error() will not return error messages generated by previously-run scripts. - Add base_convert() function - Make sprintf() and printf() output binary safe - Made gzgetc binary safe - Add convert_cyr_string() and quoted_printable_decode() functions - Fix ldap_free_result() core dump bug - Add support for current OpenLDAP-2.0-devel library - Add php3_asp_tags directive so it can be set from Apache config files - Added UTF-8 support in the XML extension - Make rand(min,max) safer on older platforms where the low-order bits have short cycles. - Added new pdf (Portable Document Format) module - Added an XML parsing extension using James Clark's "expat" library - Optimized parts of the token cache code. - Terminate on out-of-memory errors. Until now, PHP could crash in out of memory situations (clean-up, no real effect). - Unterminated comments in include files were being reported with the wrong line number. Fixed. - Added ImageCopy() and ImageColorDeallocate(). ImageCopy() is about 20% faster than ImageCopyResized(). ImageColorDeallocate() marks palette entries free for reuse (by ). - In the CGI version, it was impossible to access resources (e.g. SQL links, images) from user-defined shutdown functions. Fixed. - Added optional third parameter to strpos() to specify the offset to start searching from. - Fixed a crash bug in unset() when unsetting illegal variables (rare). - Made ImageInterlace and ImageTransparentColor parameters optional, and made them return the current/new settings. - Optimized GetImageSize() . - Made odbc_autocommit() without args return status - Added connect workaround for OpenLink ODBC - Added minimal InterBase support. Tested only on 4.0 & Linux. - Fixed some memory leaks and bogus error messages in the URL handler of the various file open functions. Should only affect error handling in bad URLs. October 5 1998 Version 3.0.5 - mysql_field_flags now reports all MySQL flags and the result is suitable for automatic parsing. Compatibility warning: The result format has changed. If you have scripts parsing the result of this function, you may need to adapt them. - Made nl2br() binary safe (not that it's of much use). - Fixed a bug in the API function getThis(). It affected mostly the dir functions, if nested within objects. - Fixed a problem in require() in conjunction with switch(), and in some other cases. Also fixed an identical problem with the call_user_function() API function. - Removed -lpthread when compiling with MySQL support. It caused various serious problems when compiled into Apache. - Add serialize() and unserialize() functions from jkl@njet.net - Fix in_addr_t check for systems with in_addr_t in netinet/in.h - Add atan2() function September 22 1998 Version 3.0.4 - Added uksort() - array key sort using a user defined comparison function. - Added 'j' support to date() - generates the day of the month, without possible leading zeros. - Added support for multiple crypt() encryptions if the system supports it - Added optional support for ASP-style <% %> and <%= tags - Fixed data loss problems with very large numeric array indices on 64-bit platforms (e.g. DEC UNIX). - 2 cursor_type parameters for ifx_query() and ifx_prepare changed to 1 (bitmask). Added a few constants for use in Informix module. - Added php3.ini option ifx.charasvarchar. If set, trailing blanks are stripped from fixed-length char columns. (Makes life easier for people using Informix SE.) - Static SNMP module which compiles with ucd-snmp 3.5.2 - fixed imap_header & header_info from crashing when a header line is > 1024 characters. - Added patch for rfc822_parse_adr to return an array of objects instead of a single object. - Informix Online 7.x & SE 7.x support now fairly complete and stable - Add dbase_get_record_with_names() function - Added a special case for open_basedir. When open_basedir is set to "." the directory in which the script is stored will be used as basedir. - Include alloca.c in the distribution for platforms without alloca(). - Improved stripping of URL passwords from error messages - the length of the username/password isn't obvious now, and all protocols are handled properly (most importantly, http). - Copying objects that had member functions with static variables produced undetermined results. Fixed. - Added function lstat() and cleaned up the status functions, added tests for file status functions (this may break on some plattforms) - Fixed is_link() - it was returning always false. - Fixed apache_note() - it was corrupting memory. - New Function. void get_meta_tags(string filename); Parses filename until closing head tag and turns all meta tags into variables prefixed with 'meta_'. The below meta tag would produce $meta_test="some string here" - Generalized some internal functions in order to better support calling user-level functions from C code. Fixes a few sporadic problems related to constructors inside eval() and more. - Fixed an endless loop in explode(), strstr() and strpos() in case of an invalid empty delimiter. - rand() now accepts two optional arguments, which denote the requested range of the generated number. E.g., rand(3,7) would generate a random number between 3 and 7. - Added M_PI constant. - Added deg2rad() and rad2deg() for converting radians<->degrees. - ImageArc() misbehaved when given negative angles, fixed. - Fixed a bug in ereg() that may have caused buglets under some circumstances. - Added imap_status - Shutdown functions, registered via register_shutdown_function(), could never generate output in the Apache module version. Fixed. - Brought IMAP docs into sync with acutal imap code - imap_fetchstructure now takes in optional flags - Fix potential core dumps in imap_append and imap_fetchtext_full - Fix problem in SetCookie() function related to long cookies - Add uasort() function to go along with usort (like sort() and asort()) - Add port number to Host header as per section 14.23 of the HTTP 1.1 RFC - Fix imap_reopen to only take 2 arguments with an optional 3rd flags arg - Add optional 2nd argument to imap_close - Add CL_EXPUNGE flag to imap_open() flags - Fix 4th arg on imap_append(). It was getting converted to a long by mistake. - Fix shutdown warning in the LDAP module - *COMPATIBILITY WARNING* imap_fetchstructure() "parametres" object and property name changed to "parameters" to match the documentation and to be consistent with the rest of the API. - Delete uploaded temporary files automatically at the end of a request - Add upload_max_filesize and correponsing php3_upload_max_filesize directive to control the maximum size of an uploaded file. Setting this to 0 would completely eliminate file uploads. - Force $PHP_SELF to PATH_INFO value when running in CGI FORCE_CGI_REDIRECT mode - Add apache_lookup_uri() function which does an internal sub-request lookup and returns an object containing the request_rec fields for the URI. (Yes, you have to be a bit of a gearhead to figure this one out) - Fix a few signed char problems causing functions like ucfirst() not to work correctly with non-English charsets - md5() function not binary safe - fixed August 15 1998 Version 3.0.3 - Changed the name of fopen_basedir to open_basedir, to be a little more accurate about what it does. - Added Hyperwave module - Added config-option (php3_)enable_dl . This enables/disables the dl() function. In safe-mode dl() is always disabled. - Auto-prepended files were crashing under some circumstances - fixed. - Win32 mail fixes provided by walton@nordicdms.com - Comparing between arrays and/or objects now generates a warning (it always returns false, as it used to; no comparison is made) - Fixed a bug in the syntax highlighting code, that made ending-double-quotes appear twice under certain circumstances. - Fix bug in filetype() function related to symlinks - Started integrating Informix SE support to PHP configure/makefile setup. - gdttf roundoff fixes from ellson@lucent.com - Added initial Informix SE support files from Danny Heijl - This code still needs to be integrated into the PHP configure/makefile setup and the code itself needs more work. - return in the global scope now terminates the execution of the current file. - Added the ability to register shutdown function(s), via register_shutdown_function($function_name). - Clean up const warnings - Add write support to ftp fopen wrappers - Add strspn() and strcspn() functions - On systems without strerror use Apache version if compiling as Apache module - The PHP start tag was being ignored under some circumstances - fixed. - The db, dbase and filepro functions are now Safe-Mode aware. - Added config-option (php3_)fopen_basedir . This limits the directory- tree scripts can open files in to . - Fixed pg_loreadall that didn't always return all the contents in a PostgreSQL large object. Also, doesn't pass through anything if method is HEAD. - configure fix to create target Apache module dir - Fix core dump in imageTTFtext() function - Added static IMAP support - Syntax highlighting was generating additional whitespace - fixed. - Added ucwords. Works like ucfirst, but works on all words within a string. - Added array_walk() - apply user function to every element of an array - Added usort() - array sort that accepts a user defined comparison function! - Added the ability to call user-level functions and object methods on demand from the C source using a completely generalized, slick API function. Miracles do happen every once in a while. - Added constructors. Don't even squeek about destructors! :) (we mean that) - Make pg_lowrite() binary safe - Fixed mod_charset option in ./setup - Fixed rewinddir() and dir()::rewind() under Win32 (they didn't work before). - Add Win32 COM support! By-name referencing is supported using the IDispatch interface (automation). Available functions - COM_Load(), COM_Invoke(), COM_PropGet() and COM_PropSet(). July 20 1998 Version 3.0.2a - Fix a quirk in the configuration file parser, the endless fountain of joy and fun. - Fix a bug in the API function add_method() that made dir() crash. July 18 1998 Version 3.0.2 - Compile cleanups for *BSD - Add support for the OpenLink ODBC Drivers - Add PHP_SELF, PHP_AUTH_* and HTTP_*_VARS PHP variables to phpinfo() output - Add workaround for broken makes - Add Apache 1.3.1 support (some Apache header files were moved around) - Added apache_note() function. - Fix order of system libraries and detect libresolv correctly - Fixed a bug in the Sybase-DB module. Several numeric field types were getting truncated when having large values. - Added testpages for unified odbc - Fix php -s seg fault when filename was missing - Made getdate() without args default to current time - Added ImageColorResolve() and some fixes to the freetype support. - Added strcasecmp() - Added error_prepend_string and error_append_string .ini and .conf directives to make it possible to configure the look of error messages displayed by PHP to some extent - Added E_ERROR, E_WARNING, E_NOTICE, E_PARSE and E_ALL constants, that can be used in conjunction with error_reporting() (e.g. error_reporting(E_ERROR|E_WARNING|E_NOTICE); - Fixed a crash problem with classes that contained function(s) with default values. - Fixed a problem in the browscap module. Browscap files weren't being read properly. - Fix -L path in libphp3.module to make ApacheSSL compile without errors - Fix StripSlashes so it correctly decodes a \0 to a NUL July 04 1998 Version 3.0.1 - echo/print of empty strings don't trigger sending the header anymore. - Implemented shift left and shift right operators (<< and >>) - Compile fix for cc on HP-UX. - Look for beta-version Solid libraries as well. - Make GD module show more info in phpinfo(). - Compile fix for NextStep 3.0. - Fix for Oracle extension on OSF/1. - Fix gd 1.3 bug in ImageColorAt(). - pg_loread() hopefully handles binary data now. - Turned off some warnings in dns.c - Added ImageTTFBBox() and made ImageTTFText() return bounding box. - Added constants for Ora_Bind()'s modes. - Renamed all hash_*() routines to _php3_hash_*() to avoid clashes with other libraries. - Changed uodbc default LONG behaviour: longreadlen 4096 bytes, binmode 1. The module now actually uses the php.ini settings. - New PostgreSQL functions: pg_fetch_row(), pg_fetch_array() and pg_fetch_object() - Fix a segmentation fault when calling invalid functions in certain circumstances - Fix bug that caused link-related functions to not pay attention to run-time safe mode setting (it was using whatever was set at compile time). - Fix bug in exec() function when used in safe mode June 6 1998 Version 3.0 - Add checkdnsrr function (check availability DNS records) - Add getmxrr function (get MX hostnames and weights) - Fixed bug in nl2br() function - Fix for an RC5 related problem in the Sybase module, when dealing with very long data types. - Speed up string concatenation by roughly a factor of 2 - Add escape-handling to date function - Make base64 functions binary safe - Add strrpos function to complement strpos function added in RC5 - Add ltrim function (strips only at the start of string) - Add rtrim as an alias to chop() for completeness sake - Add trim function (similar to chop, except it strips at the start as well) - Added 2 optional args to fsockopen function - errno and errstr - Fixed bug in split() function related to leading matches - Fixed problem in error_log() function (thanks to Jan Legenhausen) - empty("0") was returning true - fixed - Removed the old sybsql module. Use the new sybase_*() functions instead. - Several fixes to the configuration file parser - LDAP fixes - fixed return values on several functions May 23 1998 Version 3.0RC5 - The BC math library functions now compile in by default. - Fixed a bug in virtual() and other types of SSI's (e.g.