PHP 3.0 CHANGE LOG ChangeLog ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 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.