雖然PHP 5.1.1釋出後是為了迅速修正PHP 5.1.0的bug,不過在推出後,還是面臨很多狀況,PHP組織在一個多月後,剛剛正式釋出了PHP 5.1.2,由於修正了三項重大的安全性問題,以及改善PHP進入5.1時代後的諸多bug,PHP組織鼓勵所有PHP網站用戶更新。
本站也更新到PHP 5.1.2,目前搭配Zend Optimizer 2.6測試的結果是比PHP 5.1.1穩定多了,也保有之前的速度優勢,只要持續運作正常,短時間應該都不會再換回相對較穩定且歷史悠久的PHP 5.0.5。至於對PHP加速有幫助的另一套軟體eAccelerator,因為相容性問題,一開始還沒辦法使用,後來推出新版本的eAccelerator 0.9.4 一度支援PHP 5.1.2,後來更推出0.9.5,改善對PHP 5.1.2的支援度。
我覺得比較特別的改進,是除了修正多達85項bug與XSS、mysqli、headers等三大安全性問題外,新增加的Hash與XMLWriter這兩個延伸套件應該會加密與產生XML變得更好用。
從下面列出本次更新內容與修正列表的長度,就可以知道開發社群這陣子的努力:
Updated libsqlite in ext/sqlite to 2.8.17. (Ilia)
Updated libsqlite in ext/pdo_sqlite to 3.2.8. (Ilia)
Updated to libxml2-2.6.22 and libxslt-1.1.15 in the win32 bundle. (Rob)
Added new extensions: (Ilia, Wez)
o XMLWriter
o Hash
Added PNG compression support to GD extension. (Pierre)
Added reflection constants as class constants. (Johannes)
Added –enable-gcov configure option to enable C-level code coverage. (John, Jani, Ilia, Marcus)
Added missing support for 'B' format identifier to date() function. (Ilia)
Changed reflection to be an extension. (Marcus)
Improved SPL extension: (Marcus)
o Added class SplFileInfo as root class for DirectoryIterator and SplFileObject
o Added SplTempFileObject
Improved SimpleXML extension: (Marcus)
o Fixed memleaks
o Fixed var_dump()
o Fixed isset/empty/(bool) behavior
o Fixed iterator edge cases
o Added methods getNamespaces(), getDocNamespaces()
Upgraded pear to version 1.4.6. (Greg)
Added constants for libxslt and libexslt versions: LIBXSLT_VERSION, LIBXSLT_DOTTED_VERSION, LIBEXSLT_VERSION and LIBEXSLT_DOTTED_VERSION. (Pierre)
Fixed possible crash in apache_getenv()/apache_setenv() on invalid parameters. (Ilia)
Changed errors to warnings in imagecolormatch(). (Pierre)
Fixed segfault/leak in imagecolormatch(). (Pierre)
Fixed small leak in mysqli_stmt_fetch() when bound variable was empty string. (Andrey)
Fixed prepared statement name conflict handling in PDO_PGSQL. (Thies, Ilia)
Fixed memory corruption when PDO::FETCH_LAZY mode is being used. (Ilia)
Fixed possible leaks in imagecreatefromstring() with invalid data. (Pierre)
Fixed possible memory corruption inside mb_strcut(). (Ilia)
Fixed possible header injection by limiting each header to a single line. (Ilia)
Fixed possible XSS inside error reporting functionality. (Ilia)
Fixed many bugs in OCI8. (Tony)
Fixed crash and leak in mysqli when using 4.1.x client libraries and connecting to 5.x server. (Andrey)
Fixed bug #35916 (Duplicate calls to stream_bucket_append() lead to a crash). (Ilia)
Fixed bug #35908 (curl extension uses undefined GCRY_THREAD_OPTIONS_USER). (Ilia)
Fixed bug #35907 (PDO_OCI uses hardcoded lib path $ORACLE_HOME/lib). (Tony)
Fixed bug #35887 (wddx_deserialize not parsing dateTime fields properly). (Derick)
Fixed bug #35885 (strtotime("NOW") no longer works). (Derick)
Fixed bug #35821 (array_map() segfaults when exception is throwed from the callback). (Tony)
Fixed bug #35817 (unpack() does not decode odd number of hexadecimal values). (Ilia)
Fixed bug #35797 (segfault on PDOStatement::execute() with zend.ze1_compatibility_mode = On). (Tony, Ilia)
Fixed bug #35781 (stream_filter_append() can cause segfault). (Tony)
Fixed bug #35760 (sybase_ct doesn't compile on Solaris using old gcc). (Tony)
Fixed bug #35759 (mysqli_stmt_bind_result() makes huge allocation when column empty). (Andrey)
Fixed bug #35751 (using date with a timestamp makes httpd segfault). (Derick)
Fixed bug #35740 (memory leak when including a directory). (Tony)
Fixed bug #35730 (ext/mssql + freetds: Use correct character encoding and allow setting it). (Frank)
Fixed bug #35723 (xmlrpc_introspection.c fails compile per C99 std). (Jani)
Fixed bug #35720 (A final constructor can be overwritten). (Marcus)
Fixed bug #35713 (getopt() returns array with numeric strings when passed options like '-1'). (Tony)
Fixed bug #35705 (strtotime() fails to parse soap date format without TZ). (Ilia)
Fixed bug #35699 (date() can't handle leap years before 1970). (Derick)
Fixed bug #35694 (Improved error message for invalid fetch mode). (Ilia)
Fixed bug #35692 (iconv_mime_decode() segmentation fault; with libiconv only). (Tony)
Fixed bug #35690 (pack() tries to allocate huge memory block when packing float values to strings). (Tony)
Fixed bug #35669 (imap_mail_compose() crashes with multipart-multiboundary-email). (Ilia)
Fixed bug #35660 (AIX TZ variable format not understood, yields UTC timezone). (Derick)
Fixed bug #35655 (whitespace following end of heredoc is lost). (Ilia)
Fixed bug #35630 (strtotime() crashes on certain relative identifiers). (Ilia)
Fixed bug #35629 (crash in http:// wrapper on multiple redirects). (Ilia)
Fixed bug #35624 (strtotime() does not handle 3 character weekdays). (Ilia)
Fixed bug #35612 (iis6 Access Violation crash). (Dmitry, alacn.uhahaa)
Fixed bug #35594 (Multiple calls to getopt() may result in a crash). (rabbitt at gmail dot com, Ilia)
Fixed bug #35571 (Fixed crash in Apache 2 SAPI when more then one php script is loaded via SSI include). (Ilia)
Fixed bug #35570 (segfault when re-using soap client object). (Dmitry)
Fixed bug #35558 (mktime() interpreting 3 digit years incorrectly). (Ilia)
Fixed bug #35543 (php crash when calling non existing method of a class that extends PDO). (Tony)
Fixed bug #35539 (typo in error message for ErrorException). (Tony)
Fixed bug #35536 (mysql_field_type() doesn't handle NEWDECIMAL). (Tony)
Fixed bug #35517 (mysql_stmt_fetch returns NULL on data truncation). (Georg)
Fixed bug #35509 (string constant as array key has different behavior inside object). (Dmitry)
Fixed bug #35508 (PDO fails when unknown fetch mode specified). (Tony)
Fixed bug #35499 (strtotime() does not handle whitespace around the date string). (Ilia)
Fixed bug #35496 (Crash in mcrypt_generic()/mdecrypt_generic() without proper init). (Ilia)
Fixed bug #35490 (socket_sendto() unable to handle IPv6 addresses). (Tony)
Fixed bug #35461 (Ming extension fails to compile with ming 0.3beta1). (Jani)
Fixed bug #35437 (Segfault or Invalid Opcode 137/1/4). (Dmitry)
Fixed bug #35470 (Assigning global using variable name from array doesn't function). (Dmitry)
Fixed bug #35456 (+ 1 [time unit] format did not work). (Ilia)
Fixed bug #35447 (xml_parse_into_struct() chokes on the UTF-8 BOM). (Rob)
Fixed bug #35431 (PDO crashes when using LAZY fetch with fetchAll). (Wez)
Fixed bug #35430 (PDO crashes on incorrect FETCH_FUNC use). (Tony)
Fixed bug #35427 (str_word_count() handles '-' incorrectly). (Ilia)
Fixed bug #35425 (idate() function ignores timezone settings). (Ilia)
Fixed bug #35422 (strtotime() does not parse times with UTC as timezone). (Ilia)
Fixed bug #35414 (strtotime() no longer works with ordinal suffix). (Ilia)
Fixed bug #35410 (wddx_deserialize() doesn't handle large ints as keys properly). (Ilia)
Fixed bug #35409 (undefined reference to 'rl_completion_matches'). (Jani)
Fixed bug #35399 (Since fix of bug #35273 SOAP decoding of soapenc:base64binary fails). (Dmitry)
Fixed bug #35393 (changing static protected members from outside the class, one more reference issue). (Dmitry)
Fixed bug #35381 (ssl library is not initialized properly). (Alan)
Fixed bug #35377 (PDO_SQLITE: undefined reference to "fdatasync"). (Nuno, Jani)
Fixed bug #35373 (HP-UX "alias not allowed in this configuration"). (Dmitry)
Fixed bug #35288 (iconv() function defined as libiconv()). (Nuno)
Fixed bug #35103 (mysqli handles bad unsigned (big)int incorrectly).(Andrey)
Fixed bug #35062 (socket_read() produces warnings on non blocking sockets). (Nuno, Ilia)
Fixed bug #35028 (SimpleXML object fails FALSE test). (Marcus)
Fixed bug #34729 (Crash in ZTS mode under Apache). (Dmitry, Zeev)
Fixed bug #34429 (Output buffering cannot be turned off with FastCGI). (Dmitry, Ilya)
Fixed bug #34359 (Possible crash inside fopen http wrapper). (Ilia, Sara, Nuno)
Fixed bug #33789 (Many Problems with SunFuncs). (Derick)
Fixed bug #33671 (sun_rise and sun_set don't return a GMT timestamp if one passes an offset). (Derick)
Fixed bug #32820 (date_sunrise and date_sunset don't handle GMT offset well). (Derick)
Fixed bug #31347 (is_dir and is_file (incorrectly) return true for any string greater then 255 characters). (Nuno, Ilia)
Fixed bug #30937 (date_sunrise() & date_sunset() don't handle endless day/night at high latitudes). (Derick)
Fixed bug #30760 (Remove MessageBox on win32 for E_CORE errors if display_startup_error is off). (Ilia)
Fixed bug #29955 (mb_strtoupper() / lower() broken with Turkish encoding). (Rui)
Fixed bug #28899 (mb_substr() and substr() behave differently when "mbstring.func_overload" is enabled). (Rui)
Fixed bug #27678 (number_format() crashes with large numbers). (Marcus)