summaryrefslogtreecommitdiff
path: root/ChangeLog
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>1999-04-07 21:05:13 +0000
committerZeev Suraski <zeev@php.net>1999-04-07 21:05:13 +0000
commitaceaabceffd537a0ed83fa25e189b08eae585f4a (patch)
treebcef55f16a2ae57c1c883b34347f9e6906ca6dfe /ChangeLog
parentd94f3e22ae6fe17d82b189dc362e975a906f919a (diff)
downloadphp-git-aceaabceffd537a0ed83fa25e189b08eae585f4a.tar.gz
PHP 4.0
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog859
1 files changed, 859 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000000..76e826b96b
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,859 @@
+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 <michale@utko.fee.vutbr.cz>
+- 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 <mka@satama.com>).
+- 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() <thies@digicol.de>.
+- 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"
+ <meta name="test" content="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 <on/off>. 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 <path>. This limits the directory-
+ tree scripts can open files in to <path>.
+- 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. <!--#exec). Under
+ certain circumstances, this used to result in random problems.
+- Fixed a bug in virtual(). It was misbehaving if it was called before any
+ other output.
+- Added mysql.default_port, mysql.default_host, mysql.default_user and
+ mysql.default_password ini-file directives.
+- Improved handling of the MySQL default port. It now honors /etc/services
+ and $MYSQL_TCP_PORT.
+- Fixed a crash in opening of broken ftp:// URLs, and improved error reporting
+ in opening of URLs.
+- Fixed several non-critical scanner issues with syntax highlighting mode and
+ the <script language=php> tag.
+- Fixed fseek on windows. (windows only): fseek will not return proper results
+ on files opened as text mode. PHP uses binary mode as the default for file
+ operations, but this can be overiden by fopen. Do not open files in text
+ mode and use fseek on them!
+- Add strpos() function
+- Added zlib module, requires zlib >= 1.0.9
+- Improved the module API implementation. Dynamic modules may now register
+ persistent resources (not that it makes much sense, but at least PHP
+ won't crash). The API itself remains unchanged.
+- bcmod() wasn't always behaving like modulus should behave (it was behaving
+ exactly like GNU bc's % operator). Fixed.
+- Changed the Sybase-DB module to always return strings, instead of auto-typing
+ result sets. This was done for consistency with the other database modules,
+ and in order to avoid overflows due to the platform-dependant limitations
+ of the numeric data types of PHP. You can turn compatability mode on using
+ the sybase.compatability_mode directive in the php3.ini file.
+- Fixed problems with the TINYINT field in the Sybase-CT module.
+- Applied some small speed optimizations to the Sybase-DB module querying code.
+- Added 'numeric' and 'type' properties to the object returned by
+ sybase_fetch_field().
+- The 'new' operator doesn't accept all expressions anymore. Instead, it
+ accepts a class name, or a variable reference (scalar, array element, etc).
+- Add ora_numcols() function
+- Add ora_do() and ora_fetch_into() functions to Oracle driver
+- Add persistent connection support to Oracle driver
+- Make Oracle driver clean up open connections and open cursors automatically
+- Added fread() and fwrite() that properly handle binary data.
+- Add Ora_ColumnSize() to Oracle code
+- The string "0" means FALSE again. This was done in order to maintain type
+ conversion consistency.
+- Added solid_fetch_prev() for fetching the previous result row from Solid.
+- Huge integers are now automatically converted to floating point numbers
+ (that have a wider range).
+- Floating point numbers are now displayed using scientific notation when
+ they're extremely big or extremely small. The 'precision' php3.ini directive
+ no longer designates the number of decimal digits, but rather, the maximum
+ number of significant digits required.
+- Added support for scientific notation for floating point numbers (e.g. 1E7)
+ throughout the entire language.
+- Fixed a potential/probable memory corruption problem with HEAD request
+ handling.
+- Using un-encapsulated strings now generates a NOTICE-level warning
+ (e.g. $a = foo; instead of $a = "foo";)
+- Added defined("name") function to check if a certain constant is defined
+ or not.
+- Support new Apache mechanism for setting SERVER_SUBVERSION
+- Added PHP_OS and PHP_VERSION constants
+- Added the ability to define constants in runtime! Constants are script-wide,
+ (there's no scope, once the constant is defined, it's valid everywhere).
+ Syntax is define("name", $value [, $case_insensitive]). 'name' can be any name
+ that is a valid variable name, *without* the $ prefix. 'value' can be
+ any *scalar* value. If the optional 'case_insensitive' parameter is 1,
+ then the constant is created case-insensitive (the default is case
+ sensitive). Note: define() is currently *NOT* supported in preprocessed
+ scripts.
+- Added general support for constants. The Syslog constants (e.g.
+ LOG_ERR, LOG_CRIT, etc.) should be accessed as constants from now on (that
+ is, without a $ prefix). You can still set define_syslog_variables to On
+ in the php3.ini file if you want to define the various $ variables. The
+ default for this directive in the php3.ini-dist file has been changed to
+ Off.
+- The configuration file path variable now expands . and .. into their
+ respective directories. You can obtain the path of the php3.ini file
+ that was used by printing get_cfg_var("cfg_file_path").
+- Fixed a crash-recovery parser crash ($a=7; $a[3]+=5;)
+- Add gmmktime() function
+- Fixed a crash with implode() and empty arrays.
+- Fixed a bug that, under fairly rare circumstances, caused PHP not to
+ recognize if(), require() and other statements as statements, and
+ to complain about them as being unsupported functions.
+- Beautified php3.ini-dist and added more comments to it. Also changed
+ the behavior of the configuration file parser to be brighter about
+ the various constants (TRUE/FALSE/ON/OFF etc).
+- Fixed a bug in openlog() - the specified device name was being mangled.
+- Memory leaks were sometimes reported erroneously - fixed.
+- Improved the convertor to handle some quirks of the PHP/FI 2 parser with
+ comments.
+- Fixed number_format() to properly handle negative numbers, and optimized it
+ a bit.
+- Fixed static variables inside class member functions. Note that using such
+ static variables inside member functions usually defeats the purpose of
+ objects, so it is not recommended.
+- Fixed a bug in fpassthru() (the file was being closed twice).
+- Added strftime().
+- Add set_socket_blocking() function to control blocking on socket fd's
+- The sendmail_path in php3.ini was being ignored - fixed.
+- Fixed a bug with file upload, with files that contained the MIME boundary
+ inside them.
+- Fixed a bug with form variables of type array, with spaces in their
+ index (e.g. name="foo[bar bar]").
+- gd-1.3 autodetect and support
+- Year 2000 compliance is now togglable from the php3.ini file. Setting PHP
+ to be y2k compliant effects the way it creates cookies, and means it'll
+ NOT work with many browsers out there that are not y2k compliant! For
+ that reason, the default for this option is off.
+- safe mode / fix from monti@vesatec.com
+- Integrated the FreeType support in the GD extension.
+- Added --with-gd=DIR and --without-gd options to configure
+
+April 18 1998 Version 3.0 Release Candidate 4
+- Auto-prepended and auto-appended files were reporting the wrong filename
+ in errors and in __FILE__ - fixed.
+- Fix GPC problem related to mixed scalar and array vars with the same name
+- Made putenv() Apache-safe. Environment variables may no longer leak in
+ between requests.
+- The trailing semicolon is no longer required in class declarations.
+- Fixed a memory leak in the (array) and (object) operators under certain
+ conditions.
+- <script> tags weren't working unless short tags were enabled - Fixed.
+- Fixed a bug in certain array indices that weren't treated as numbers
+ even though they looked like numbers (e.g. "10", "20").
+- Changes to support renamed API functions in Apache-1.3
+- Fixed the -p and -e command line switches
+- Fix a segfault when calling command line version without parameters
+- Fix for feof() when used on a socket
+- Fix off-by-one error in fgets() when used on a socket
+- Fix bug in ImageSetPixel() (Thanks to ecain@Phosphor.net)
+
+March 31 1998 Version 3.0 Release Candidate 3
+- Tiny bugfix for magic_quotes_sybase
+- Fix Apache build problems introduced in RC2
+- $a["0"]==$a[0] fix
+- Apache-1.3 build changes to support 100% automatic builds and shared library
+ module builds. See INSTALL file.
+
+March 30 1998 Version 3.0 Release Candidate 2
+- Changed the socket implementation under UNIX to not use FILE pointers, in
+ order to work around the buggy Solaris libc (and possibly buggy libc's
+ in other platforms).
+- Fixed a bug in min() and max() with certain arrays.
+- *WARNING* Move Apache 1.3 php3 file install to src/modules/php3 instead of
+ src/modules/extra. Make sure you change your AddModule line correctly
+ in your Apache Configuration file. This change is to take advantage of
+ new Apache-1.3 configuration mechanism which makes it easier to build an
+ Apache server with PHP automatically enabled. It will also help building
+ a shared library module version of PHP soon.
+- Fixed a crash bug with auto-appended files.
+- Made --enable-discard-path work on all Unix servers #!/path/php CGI scripts
+ should now work everywhere. I have tested on Apache, WN and Netscape 2.0
+- Made $a["123"] and $a[123] be identical. $a["0123"] is still different,
+ though.
+- Added 'precision' ini directive, to set the number of decimal digits
+ displayed for floating point numbers (default - 6).
+- Made integer/integer divisions evaluate to floating point numbers when
+ applicable (e.g., 5/2==2.5(float), but 4/2==2(int))
+- Get rid of reliance on tied streams and move all socket reads and writes
+ to recv/send calls
+- Cleaned up head.c a bit and fixed CGI SetCookie order problem
+- Changed default variable parsing order to Get-Cookie-Post (GPC)
+- Fixed setup so it has all configure options and defaults.
+- Added optional decimal point and thousands seperator to number_format()
+ e.g., number_format(1500,2,',','.') == 1.500,00
+- Fixed cgi bug in windows that prevented files from being parsed on many
+ systems and servers.
+
+March 23 1998 Version 3.0 Release Candidate
+- Added support for the Raima database (ALPHA)
+- Fixed a bug in persistent PostgreSQL links and the connection-string method.
+- Added EXTENSION_STATUS file, that specifies the stability and status of
+ every module in the distribution.
+- Added optional parameters to user functions with default values, variables
+ that are forced to be passed by reference and variables that can be
+ optionally passed by reference. The ini file directive
+ 'ignore_missing_userfunc_args' is no longer supported.
+- Added fhttpd support (by Alex Belits)
+- Improved performance by approximately 20-30%.
+- Added mysql_error(), mysql_errno() (if available) and msql_error().
+ Errors coming back from the database backend no longer issue warnings.
+ Instead, use these functions to retreive the error.
+- Patched count(), each(), prev(), next(), reset() and end() to work around
+ the implementation side effects of unset(). As far as the users are
+ concerned, this should be transparent now (even though it's slower now,
+ until it's thoroughly fixed in 3.1).
+- Added number_format(). number_format(2499,2)=='2,499.00'.
+- error_reporting() now sets the error reporting level to the supplied
+ argument, without any interpretations.
+- Fixed a lookahead parser bug that occured under rare circumstances.
+- Change the comparison operators to compare numeric strings as numbers. If
+ you want to compare them as strings, you can use the new C-like strcmp()
+- Fixed Ora_GetColumn() bug when fetching strings
+- Added Ora_ColumnName() and Ora_ColumnType()
+- Preliminary LONG and LONG RAW support in Oracle extension
+- Add \123 and \xAB style octal and hex escapes to "" and `` strings
+- Add "-c" command line flag for specifying path to php3.ini file
+- Improved list() so that elements can be skipped, for example:
+ list($name,,,$realname) = explode(":",fgets($passwd_file));
+- Fixed a tiny bug in the hash initialization which caused excessive use of
+ memory. Report and fix by short@k332.feld.cvut.cz
+- Fixed strtolower() and strtoupper() to work with 8-bit chars
+- Fixed to compile and run on SunOS 4.1
+- Fixed a crash in soundex() of an empty string
+- Fixed parse_str() - it wasn't always defining the right variables,
+ and didn't work with arrays.
+- Made [m,My]SQL create/drop database functions return success status
+- Fixed some memory leak/crash problems in the Adabas module
+- Added each() in order to allow for easy and correct array traversing.
+- Make Apache module version respect LOCALE setting
+- Add support for Apache 1.3b6+ ap_config.h file
+- Fixed a nasty corruption bug in eval() and show_source() that resulted in
+ script termination (e.g. eval("exit();").
+- Fixed a syntax highlighting problem with keywords used as variable
+ names.
+- Fixed a possible crash and/or file descriptor leak
+- Fixed line number being off by one in #! shell style execution
+- Made it possible to disable auto_prepend/append with "none" filename
+- Allow safe CGI calling through #!php style scripts
+
+March 2 1998 Version 3.0b6
+- Made [s]printf handle %ld
+- Changed CGI version to only open regular files as input script
+- Added ignore_missing_userfunc_args directive to suppress warnings messages
+ about missing arguments to user-defined functions
+- Added Postgres function - pg_cmdtuples(), by Vladimir Litovka
+- Disabled command line options if used as CGI
+- Changed CGI version to use PATH_TRANSLATED as the script file name
+- Link with solid shared library instead of static one
+- Fixed a crash with functions that aren't being called correctly
+- Fixed file descriptor leak in auto-prepend/append
+- Imap module is usable. See README in dl/imap.
+
+February 24 1998 Version 3.0b5
+- Made the URL aware file functions be enabled by default
+- Fixed an unlikely crash bug in the parser, with uninitialized array elements
+ which are refered to as objects.
+- Fixed several fields that were being incorrectly read in Sybase CT.
+- Fix Apache-1.3 related SIGHUP problem which was preventing php3.ini from
+ getting re-read on a SIGHUP
+- *** WARNING *** Downwards incompatible change: The plus operator (+) is not
+ longer overloaded as concatenation for strings. Instead, it converts its
+ arguments to numbers and performs numeric addition.
+- Add Stig and Tin's bdf2gdfont script to extra/gd directory
+- Added join() as an alias to implode()
+- Made implode() accept arguments in the order used by explode() as well
+- Made $php_errormsg local in function calls
+- Fixed Apache configuration directive bugs
+- Added a number of .ini directives to Apache .conf directive list
+- Fixed a 'memory leak' with strtok()
+- echo/print now handle binary data correctly.
+- NEW now accepts any expression for the class name argument.
+- Add ImageDashedLine() GD function
+- Add arg_separator .ini directive so the '&' GET method separator can be
+ changed to ';' for example. Corresponding php3_arg_separator Apache .conf
+ directive works as well.
+- Walked around an implementation side effect of switch(). <? switch(expr) { ?>
+ now works.
+- Added memory caching, resulting in a significant performance boost
+- Added support for for(): .. endfor; loops
+- Added a new predicate - empty($var). Returns true if $var is not set,
+ or is FALSE. Returns false otherwise.
+- Added is_integer() (same as is_long()) and is_real() (same as is_double()).
+- Added sizeof() as an alias to the count() function
+- Added --enable-force-cgi-redirect, to prevent the CGI from working if
+ someone directly accesses PHP not through Apache's CGI redirect
+ (off by default).
+- Fixed marking of deleted dBase records. Noticed by Simon Gornall
+ <simon@oyster.co.uk>.
+- Fixed fixed "%%" bug in [s]printf
+- Fixed a UMR (initialized memory read) in the Oracle code
+- Potential fix for mysql-related SIGPIPE problem which caused httpd to spin
+- Made PHP responsive to the Apache link status (stop executing if the link
+ dies).
+- Fixed a crash bug with StrongHold and secure pages
+- Fixed StrongHold installation
+- Optimized the function call sequence a bit.
+- Fixed Sybase/CT date/datetime/money fields work to correctly.
+- Fixed Apache module startup problems - php3_module_startup should only be
+ called once.
+- Fixed ord() with characters >127
+- Fixed bug in file_exists() function
+- Fixed stripslashes() to remove the escaping quote (instead of backslash)
+ in case magic_quotes_sybase is true.
+- Also make echo and print automatically remove trailing decimal zeros.
+- Added htmlentities(), currently handling only ISO-8859-1 entities
+- "0" is no longer considered false, the only string which is false is the
+ empty string "".
+- Added 'true' and 'false' keywords
+- Added 'xor' (logical exclusive or)
+- Automatic conversion from double to string removes decimal trailing zeros.
+- Added arsort() and rsort() to sort in descending order.
+- Turned on "XLATOPT_NOCNV" by default for uODBC/Solid.
+- Added support for a port number in the mysql_(p)connect() functions
+- Fixed a file descriptor leak in the configuration parser.
+- Fixed a few buglets with syntax highlighting with certain language keywords
+- Added functions to control minimum severity level of Sybase messages to
+ display.
+- Added highlight_string() - behaves like highlight_file(), only instead
+ of highlighting a file, it syntax highlights the contents of its
+ argument.
+- Renamed show_source() to highlight_file(). show_source() is still
+ supported for downwards compatability.
+- Fixed a bug in class inheritence - member functions with upper case
+ letters in their names couldn't be redefined.
+- Made chown(), chgrp() and chmod() return TRUE/FALSE instead of 0/-1.
+
+February 02 1998 Version 3.0b4
+- Fixed a segfault bug in one of the unified ODBC error messages.
+- Set default file modes to binary on Win32 (solved a lot of bs)
+- Fixed file copy on Win32
+- MIME file uploads fixed on Win32
+- Added contributed icons by Colin Viebrock (undex extra/icons)
+- Fixed the debugger enough to call it "beta code".
+- Fixed some leaks in the Oracle module, tidied up the code a bit.
+- Added __FILE__ and __LINE__ which evaluate to the currently parsed file
+ and currently parsed line respectively.
+- Added ImageColorAt(), ImageColorSet(), ImageColorsForIndex(), and
+ ImageColorsTotal() to allow manipulating the palette of GIF images.
+- Rename '--enable-url-includes' option to '--enable-url-fopen-wrapper' to
+ better describe what it does, and pay attention to the setting.
+- Added optional parameter to the file(), readfile() and fopen() functions
+ to look for files located in the include path.
+- Fixed bug that allowed the file() and readfile() to open files in the
+ include path inadvertantly.
+- Fixed a (documented) bug in printf()/sprintf() with hard limited strings
+ and alignment (e.g. %-.20s).
+- Optimized several quoted string routines.
+- Added error_log ini directive to select where errors get logged when
+ log_errors is turned on or the error_log() function is used.
+- Added the ability to direct errors to log files instead of or in addition
+ to the script output. Use the new display_errors and log_errors
+ php3.ini directives.
+- Made environment variables uneraseable by POST/GET/Cookie variables.
+- Fixed a bug in the elseif() construct. The expression was being evaluated
+ even if a previous if/elseif already evaluated to true and got executed.
+- Fixed a bug in the exit code parameter of system()
+- Tighten up all exec() related functions in safe mode
+- Added error_log() function to log messages to the server error log, or
+ stderr for the CGI version.
+- Added support for a general memory limit of scripts.
+- Fixed a segfault bug that occured under certain circumstances with shell
+ escapes ($foo = `...`)
+- Made keywords be valid property names of objects.
+- Fixed a segfault bug when creating new objects of an unknown class.
+- Fixed a problem with the maximum execution time limit, that may have
+ prevented this feature from working on certain platforms.
+- PHP would now warn you with E_NOTICE about unknown escape characters,
+ e.g. "\f". It would still be considered as a backslash followed by f,
+ but the proper way of writing this is "\\f" or '\f'.
+- Added support for ${...} inside encapsulated strings. Supported: ${foo},
+ ${foo[bar]}, ${foo[0]}, ${$foo[$bar]}, ${$foo->bar} and ${$foo}
+- Fixed a bug in automatic persistent link reconnect of the Sybase/DB module.
+ Thanks to Steve Willer for finding that 'stealth' bug!
+- Fixed a crash bug in the GET/POST/Cookie parser in case of regular
+ and array variables with the same name.
+- Added round() function.
+- Can't use encapsed strings as variable names anymore, ie. $"blah blah".
+- Fixed bug in gethostby*() functions that resulted in a core dump.
+ (Noticed by torben@coastnet.com.)
+- Fixed bug in dbase_get_record that prevented number and date fields
+ from being properly decoded. (Thanks again to colins@infofind.com.)
+- Make dbase_get_record include a 'deleted' field that indicates whether
+ that record had been marked for deletion.
+- Fixed bug in dbase library that stomped on the deleted flag of the first
+ record in the file if it was set. (Thanks to colins@infofind.com.)
+- Fixed putenv() to not report a memory leak and possibly prevent a bug
+ from that memory being freed.
+- Added setlocale()
+- Added pg_fieldisnull() (by Stephan Duehr)
+- Changed pg_exec() to always return a result identifier on succees
+- Solid linking fixes (tries to find the right library)
+- Fixed a but with date() and the 'w' element.
+- Tried to eliminate unimportant memory leak notifications.
+- Made min() and max() backwards compatible and able to handle doubles.
+- Add fgetc() function
+- Fixed bug in getmyuid(), getmyinode() and getlastmod(). Thanks to
+ khim@sch57.msk.ru for pointing this out.
+- Fixed http:// URL includes with no path specified send request for /.
+- Added GetAllHeaders() (Apache-only)
+- Added workaround that made the Image text functions 8-bit clean
+- Made snmp internally compilable for Win32 (not the unix one though),
+ only adds 2k to binary size, so no reason not to have it there.
+- Fixed ldap loading on Win32
+- Fixed MySQL Info function on Win32 platform
+- Fixed compilation of syntax highlighting mode
+
+January 17 1998 Version 3.0b3
+- Added mysql support under windows ;) happy happy joy joy
+- Fixed dbase.dll for Win32 to actualy load now.
+- Enhanced the convertor to recognize ?> as a php-close-block as well.
+- Fixed potential SetCookie() core dumps
+- Changed print to be an expression instead of a statement. That means you can
+ now do stuff like foobar() or print("Unable to foobar!"). echo has NOT been
+ changed.
+- Removed the flex optimization flags to reduce the size of the scanner
+- Added memory leak logging into apache log files (apache module only)
+- Fixed a nasty bug in one of the internal stacks. This may have caused
+ random crashes in several occassions.
+- Fixed bug in ImageGif() making it hang sometimes
+- Added ImageLoadFont(), ImageFontWidth() and ImageFontHeight()
+- error_reporting() now returns the old error reporting level
+- Fixed url includes/opens not working under Win32
+- Fixed errorneous handling of multipart/form-data input
+- Added rawurlencode(), rawurldecode() and changed urlencode() and urldecode()
+ a bit too.
+- Fixed a bug in [s]printf, sign was forgotten for doubles.
+- Fixed a segfault bug in pg_fieldprtlen(), and made it accept field names
+ in addition to field offsets.
+- Made the setup script a little more user-friendly.
+- Added is_long(), is_double(), is_string(), is_array() and is_object()
+- Fixed a bug in freeing of mSQL results.
+- Improved pg_exec() to properly return true or false with queries that don't
+ return rows (i.e. insert, update, create, etc)
+- Added get_cfg_var() to enable checking cfg file directives from within
+ a script.
+- Fixed a bug with urlencode() and characters 0x80-0xff
+- Changed the behaviour of ereg_replace to more intuitive. The
+ backslashes other than valid existing back references in the second
+ argument are no more evaluated as escape sequences.
+- Fixed a bug in the configuration file loader and safe mode.
+- Fixed a bug with configuration variables taken from the environment.
+- Added <script language=php> </script> as PHP open/close tags, to allow
+ the use of editors such as Microsoft Frontpage.
+- Fixed a bug in the default php3.ini directory - it wasn't defaulting to
+ /usr/local/lib properly.
+- Added support for \r\n line endings
+- Fixed a bug that may have prevented POST method variables from working
+ with certain scripts when using the CGI version.
+- Convertor: Added support for single-quoted strings
+- Fixed segfault bug in the Adabas module, with queries that don't return
+ rows (update, insert, etc).
+
+December 22 1997 Version 3.0b2
+- Changed variable type conversions that do not specify base to always use
+ base 10. "010" is no more 8, it is 10. Use intval ($x, 0) to get C-style
+ octal and hex numbers recognized.
+- Fixed a possible segfault bug in several functions, when using the concat
+ operator and possibly other operators/functions.
+- # is no longer accepted as a comment in php3.ini. Use ; instead.
+- Added browscap support
+- Configuration file directives are now case-sensitive
+- Fixed msql_tablename() and msql_dbname()
+- Added a PHP/FI 2.0 -> PHP 3.0 convertor
+- Added support for shell/perl-style single quotes
+- Added support for execution of external programs using backquotes ($a=`ls -l`)
+- fixed mail() on windows, also fixed memory leaks in mail on windows
+- added sendmail_from to handle return route on windows
+- Changed the way the config file is searched. The file name is now
+ php3.ini (hardcoded), and it'll be looked for in: local directory, $PHPRC
+ and builtin path designated by ./configure under UNIX or Windows directory
+ under Windows.
+- Fixed ereg_replace replacing empty matches and a one off buffer overflow
+- Fixed File upload on windows platform
+- Fixed a bug that caused 'HTTP/1.1 100 Continue' messages with
+ Internet Explorer 4.0 and certain scripts that receive POST variables
+- Get/POST/Cookie data variables are from now *ALWAYS* strings. If you want
+ to use them in integer/real context, you must explicitly change their types.
+ This was done in order to avoid possible loss of data when doing these
+ conversions automatically.
+- Variables named as keywords are now allowed (e.g. $function, $class, etc)
+- Fixed a problem with msql() and mysql() with NULL fields
+- Fixed a segfault bug with class declarations
+- Fixed bugs with FOR loops and include() from within eval()
+- Changed include() to be executed conditionally. PHP-3.0 efficient
+ unconditional include is now require()
+
+December 08 1997 Version 3.0b1
+- Switched to public beta test phase
+- Generalized unset() and isset() to work on any type of variables, including
+ specific array indices or object properties (e.g., unset($a[4]) now works).
+- Added support for object references inside encapsulated strings
+ (for example, 'echo "Username: $user->name"' now works)
+- Added arbitary precision math support (basic operations with
+ unlimited range numbers, and support for unlimited decimal digits)
+- Apache module can now handle preprocessed scripts (by using:
+ AddType application/x-httpd-php3-preprocessed .php3p
+ in the Apache configuration)
+- Made settype() pass its first parameter by value. Improved it to be able
+ to convert to arrays and objects (originally by Steve Willer)
+- Implemented CPU time limit on scripts when setitimer() is available
+- Computed field names in the Sybase/CT and Sybase/DB modules are now named
+ computed, computed1, computed2, ...
+- Added Sybase/CT client/server message handlers and updated the Sybase/DB ones
+- Made the regexp function automatically take arguments by reference
+ when necessary
+- Added builtin support for auto append and prepend in the parser level
+- Improved the Sybase/CT sybase_query(). Should be more stable now, and
+ hopefully work with a wider range of queries. It's difficult to work
+ without docs, though, so it may still not be 100% right...
+- Changed error messages to show error type, file and line with bold
+- Added support for autoprepend and autoprepend
+- Added some more warning flags if gcc is used
+
+December 03 1997 Version 3.0a4
+- Improved the internal functions API - no need to explicitly pass
+ parameters by reference to internal functions that specifically
+ require them, e.g. sort(), ksort(), reset(), count(), etc.
+ This is *STILL* downwards compatible with the previous alphas,
+ in the sense that you can explicitly pass the arguments by reference
+ if you want to.
+- use srandom/random instead of srand/rand if available
+- Added [m,My]sql_listfields() for downwards compatability
+- -p now replaces .php3 extension with .php3p (otherwise it adds .php3p)
+- Added C++ style comments (// comment)
+- Fixed # commenting to terminate at a close PHP tag
+- Added \0 back reference for full string match to *reg*_replace and
+ added backslash escaping to replace string
+- Fixed a few bugs in the Sybase DB-library module.
+- Added Sybase CT-library support. It should be considered experimental.
+ Syntax is identical to the one of the DB-library. Allows people to
+ connect to MS-SQL servers from Linux without having to pay for a
+ library!
+- Beautified phpinfo()
+- Add ImageColorClosest() and ImageColorExact() GD functions
+- Make all .ini directives work as Apache .conf directives as well
+- Added PHP2-like File() function with PHP3 URL support
+- Upgraded the Sybase interface. It's practically MySQL compatible now!
+ Among other things, added sybase_fetch_array() and sybase_fetch_object().
+- Fixed problem in multi dimensional array handling and self modifying
+ operators (+=, -=, etc).
+- Safe Mode file open implementation
+- SVR3 portability problem fix
+
+November 23 1997 Version 3.0a3
+- Made the global statement behave like PHP 2 with undefined variables
+- Added msql_fetch_object() and msql_fetch_array()
+- Switched between the 1st and 2nd parameters to explode(), so that it acts
+ like split()
+- Fixed passthru(), exec() and system() functions
+- Implemented second optional parameter to intval() to specify conversion base
+ (The default is to assume you want to do a base 10 conversion.)
+- Implemented SQL safe mode for MySQL
+- Read UploadTmpDir from php3.ini instead of apache conf files
+- Added mysql_fetch_object() and mysql_fetch_array()
+- Changed function->old_function. function is now an alias to cfunction.
+- Split the magic_quotes directive to get/post/data and other
+- Added generic copy() function
+- Added a $GLOBALS[] array, which contains all global variables
+- Fix broken getimagesize() function
+- Made mysql_fetch_field() and msql_fetch_field() optionally accept a 2nd argument
+- Fixed mysql_data_seek() and msql_data_seek()
+- Changed list assignment to list(...) and array init to array(...)
+- Made <?php_track_vars?> work
+- cgi when not in debug mode uses regular malloc(), free() functions now
+- Added preliminary support for perl-style list assignments
+- Fixed a bug in mysql_result() and msql_result() when specifying table
+- renamed internal error-handling function and levels
+- Added basename and dirname functions similar to sh counterparts
+- Added base64_encode() and base64_decode()
+- Support Basic authorization for http url includes
+- Added parse_url() function to extract url components
+- Made it possible to use anonymous ftp on URL includes
+- Fixed url includes to handle different URLs better
+- Fixed mysql_field*() functions
+- Made mysql_connect() smarter, after a mysql_close() (applies to msql and pgsql too)
+
+November 6 1997 Version 3.0a2
+- Fixed a segfault bug caused by non-persistent connect in [m,My,Postgres]SQL modules
+- Fix command line argument handling
+- Made empty array list assignments work ($a=({});)
+- Made '$' escaping optional when a variable name parsing isn't possible
+- Added support for mysql_[p]connect(host) and mysql_[p]connect(host,user)
+- New layout in phpinfo()
+- Update Oracle extension to use php3_list functions
+- Add includepath support
+- Add #!php shell script escape support
+- Change name of CGI/command line version from php3.cgi to php
+- Add SNMP extension
+- show_source() support
+- Parsing of command-line args for CGI version
+- Support for backreferences in ereg_replace
+- Support for hexadecimal numbers directly at the scanner level
+- Support octal numbers directly at the scanner level
+- Fixed problem with huge html files (with little or no php code)
+- Fix eval() empty string argument core dump
+- renamed 'install' to 'setup' to be more accurate and avoid name conflict
+- Fixed Oracle compilation
+- Fixed mSQL 1.0 compilation
+- Fixed a problem in the mSQL, MySQL and PostgresSQL drivers and NULL fields.
+- Fixed the GLOBAL statement to be able to declare an array.
+
+October 29 1997 Version 3.0a1
+- Start with excellent new parser from Andi and Zeev