Updating your script to PHP6 ============================ This document attempts to describe portions of PHP that changed or disapeared in PHP6 and the best practices for upgrading existing applications to support PHP6. 1. Language 1.1 Functions and function aliases 1.2 Register globals 1.3 Magic quotes 1.4 Register long arrays ($HTTP_*_VARS) 1.5 ZE1 compatibility mode 1.6 dl() function 1.7 E_ALL and E_STRICT constants 1.8 References 2. Unicode (see README.UNICODE-UPGRADES) 2. Extensions 2.1 GD 1.1 Functions and function aliases ------------------------------ 1.2 Register globals ---------------- For security reasons, register_globals has been removed from php6. ini_get('register_globals') will always return false. You can emulate its behavior with some minimum changes in your code. *DISCLAIMER* people should get a short-term solution if they are willing to run an insecure app. Here is an example to emulate the session related functions and a snippet to register variables: $_register_globals_order = strrev(ini_get("variables_order")); $_register_globals_order_len = strlen($_register_globals_order); for($_register_globals_i=0;$_register_globals_i<$_register_globals_order_len;$_register_globals_i++) { switch($_register_globals_order{$_register_globals_i}) { case "E": extract($_ENV, EXTR_REFS|EXTR_SKIP); break; case "G": extract($_GET, EXTR_REFS|EXTR_SKIP); break; case "P": extract($_POST, EXTR_REFS|EXTR_SKIP); break; case "C": extract($_COOKIE, EXTR_REFS|EXTR_SKIP); break; case "S": extract($_SERVER, EXTR_REFS|EXTR_SKIP); break; } } unset($_register_globals_order, $_register_globals_order_len, $_register_globals_i); function session_register($mixed) { static $started; if(!isset($started) || session_id() === "") { session_start(); $started = true; } $array = func_get_args(); foreach($array as $mixed) { if(is_scalar($mixed)) { $_SESSION[$mixed] =& $GLOBALS[$mixed]; } elseif(is_array($mixed)) { foreach($mixed as $name) { $ok = session_register($name); if(!$ok) { return false; } } } else { return false; } } return true; } function session_is_registered($name) { if(is_scalar($name)) { return isset($_SESSION[$name]); } return false; } function session_unregister($name) { if(isset($_SESSION[$name]) && is_scalar($name)) { unset($_SESSION[$name]); return true; } return false; } 1.3 Magic quotes ------------ 1.4 Register long arrays ($HTTP_*_VARS) ----------------------------------- register_long_arrays and the long versions of super globals had been removed. PHP will emit E_CORE_ERROR during PHP startup if it would detect register_long_arrays setting. You can emulate long arrays by including the following file: 1.5 ZE1 compatibility mode ---------------------- ZE1 compatibility mode (PHP4 object model) was introduced to migrate from PHP4 to PHP5 in an easier way, but it never keeped 100% compatibility. It is completly removed in PHP6, and there is no way to emulate it. Applications should assume PHP5/PHP6 object model. 1.6 dl() function ------------- Now dl() function is supported only in CLI, CGI and EMBED SAPI. There is no way to emulte it. You can just check if dl() is supported by SAPI: 1.7 E_ALL and E_STRICT constants ---------------------------- Now E_ALL error reporting mask includes E_STRICT. You can filter E_STRICT error messages using the following code: 1.8 References ---------- 2.1 GD