{"id":547,"date":"2010-07-26T23:22:43","date_gmt":"2010-07-27T03:22:43","guid":{"rendered":"http:\/\/mrhost.ca\/system\/?p=547"},"modified":"2011-05-09T01:56:06","modified_gmt":"2011-05-09T05:56:06","slug":"php-5-3-3-upgrade","status":"publish","type":"post","link":"https:\/\/mrhost.ca\/system\/2010\/07\/php-5-3-3-upgrade\/","title":{"rendered":"PHP 5.3.3 Upgrade"},"content":{"rendered":"<p>This evening all Mr.Host web servers have been upgraded to PHP 5.3.3<\/p>\n<p><strong>Backwards incompatible change:<\/strong><\/p>\n<ul>\n<li>Methods with the same name as the last element of a namespaced class name will no longer be treated as constructor. This change doesn&#8217;t affect non-namespaced classes.<\/li>\n<\/ul>\n<pre>&lt;?php\r\n\r\nnamespace Foo;\r\n\r\nclass Bar {\r\n    public function Bar() {\r\n\r\n        \/\/ treated as constructor in PHP 5.3.0-5.3.2\r\n        \/\/ treated as regular method in PHP 5.3.3\r\n    }\r\n}\r\n\r\n?&gt;<\/pre>\n<p>There is no impact on migration from 5.2.x because namespaces were only introduced in PHP 5.3.<\/p>\n<p><strong>Security Enhancements and Fixes in PHP 5.3.3:<\/strong><\/p>\n<ul>\n<li>Rewrote var_export() to use smart_str rather than output buffering, prevents data disclosure if a fatal error occurs (CVE-2010-2531).<\/li>\n<li>Fixed a possible resource destruction issues in shm_put_var().<\/li>\n<li>Fixed a possible information leak because of interruption of XOR operator.<\/li>\n<li>Fixed a possible memory corruption because of unexpected call-time pass by refernce and following memory clobbering through callbacks.<\/li>\n<li>Fixed a possible memory corruption in ArrayObject::uasort().<\/li>\n<li>Fixed a possible memory corruption in parse_str().<\/li>\n<li>Fixed a possible memory corruption in pack().<\/li>\n<li>Fixed a possible memory corruption in substr_replace().<\/li>\n<li>Fixed a possible memory corruption in addcslashes().<\/li>\n<li>Fixed a possible stack exhaustion inside fnmatch().<\/li>\n<li>Fixed a possible dechunking filter buffer overflow.<\/li>\n<li>Fixed a possible arbitrary memory access inside sqlite extension.<\/li>\n<li>Fixed string format validation inside phar extension.<\/li>\n<li>Fixed handling of session variable serialization on certain prefix characters.<\/li>\n<li>Fixed a NULL pointer dereference when processing invalid XML-RPC requests (Fixes CVE-2010-0397, bug #51288).<\/li>\n<li>Fixed SplObjectStorage unserialization problems (CVE-2010-2225).<\/li>\n<li>Fixed possible buffer overflows in mysqlnd_list_fields, mysqlnd_change_user.<\/li>\n<li>Fixed possible buffer overflows when handling error packets in mysqlnd.<\/li>\n<\/ul>\n<p><strong>Key enhancements in PHP 5.3.3 include:<\/strong><\/p>\n<ul>\n<li>Upgraded bundled sqlite to version 3.6.23.1.<\/li>\n<li>Upgraded bundled PCRE to version 8.02.<\/li>\n<li>Added FastCGI Process Manager (FPM) SAPI.<\/li>\n<li>Added stream filter support to mcrypt extension.<\/li>\n<li>Added full_special_chars filter to ext\/filter.<\/li>\n<li>Fixed a possible crash because of recursive GC invocation.<\/li>\n<li>Fixed bug #52238 (Crash when an Exception occured in iterator_to_array).<\/li>\n<li>Fixed bug #52041 (Memory leak when writing on uninitialized variable returned from function).<\/li>\n<li>Fixed bug #52060 (Memory leak when passing a closure to method_exists()).<\/li>\n<li>Fixed bug #52001 (Memory allocation problems after using variable variables).<\/li>\n<li>Fixed bug #51723 (Content-length header is limited to 32bit integer with Apache2 on Windows).<\/li>\n<li>Fixed bug #48930 (__COMPILER_HALT_OFFSET__ incorrect in PHP &gt;= 5.3).<\/li>\n<\/ul>\n<p>For users upgrading from PHP 5.2 there is a migration guide available on\u00a0<a href=\"http:\/\/www.php.net\/migration53\">http:\/\/php.net\/migration53<\/a>, detailing the changes between those releases and PHP 5.3.<\/p>\n<p>For a full list of changes in PHP 5.3.3, see the\u00a0<a href=\"http:\/\/www.php.net\/ChangeLog-5.php#5.3.3\">ChangeLog<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This evening all Mr.Host web servers have been upgraded to PHP 5.3.3 Backwards incompatible change: Methods with the same name as the last element of a namespaced class name will no longer be treated as constructor. This change doesn&#8217;t affect non-namespaced classes. &lt;?php namespace Foo; class Bar { public function Bar() { \/\/ treated as [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4,7,3],"tags":[],"_links":{"self":[{"href":"https:\/\/mrhost.ca\/system\/wp-json\/wp\/v2\/posts\/547"}],"collection":[{"href":"https:\/\/mrhost.ca\/system\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mrhost.ca\/system\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mrhost.ca\/system\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mrhost.ca\/system\/wp-json\/wp\/v2\/comments?post=547"}],"version-history":[{"count":6,"href":"https:\/\/mrhost.ca\/system\/wp-json\/wp\/v2\/posts\/547\/revisions"}],"predecessor-version":[{"id":550,"href":"https:\/\/mrhost.ca\/system\/wp-json\/wp\/v2\/posts\/547\/revisions\/550"}],"wp:attachment":[{"href":"https:\/\/mrhost.ca\/system\/wp-json\/wp\/v2\/media?parent=547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mrhost.ca\/system\/wp-json\/wp\/v2\/categories?post=547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mrhost.ca\/system\/wp-json\/wp\/v2\/tags?post=547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}