Although most existing PHP 4 code should work without changes, you should
    pay attention to the following backward incompatible changes:
   
- 
      strrpos() and strripos() now use
      the entire string as a needle.
     
- 
      Illegal use of string offsets causes E_ERROR instead
      of E_WARNING.
     
- 
      array_merge() was changed to accept only arrays. If a
      non-array variable is passed, a E_WARNING will be
      thrown for every such parameter. Be careful because your code may start
      emitting E_WARNING out of the blue.
     
- 
     PATH_TRANSLATED server variable is no longer set implicitly under
     Apache2 SAPI in contrast to the situation in PHP 4, where it is set to
     the same value as the SCRIPT_FILENAME server variable when it is not
     populated by Apache. This change was made to comply with the CGI specification. Please refer to bug #23610 for further information.
     
- 
     The T_ML_CONSTANT constant is no longer defined by
     the Tokenizer extension. If
     error_reporting is set to E_ALL, PHP will generate a
     notice. Although the T_ML_CONSTANT was never used
     at all, it was defined in PHP 4. In both PHP 4 and PHP 5  // and /* */
     are resolved as the T_COMMENT constant. However the
     PHPDoc style comments /** */ ,which starting PHP 5 are parsed by PHP, are
     recognized as T_DOC_COMMENT.
     
- 
      $_SERVER should be populated with argc and argv if  variables_order includes "S". If
      you have specifically configured your system to not create $_SERVER,
      then of course it shouldn't be there. The change was to always make argc
      and argv available in the CLI version regardless of the variables_order setting. As in,
      the CLI version will now always populate the global $argc and $argv
      variables.
     
- 
      An object with no properties is no longer considered "empty".
     
- 
     In some cases classes must be declared before used. It only happens only
     if some of the new features of PHP 5 are used. Otherwise the behaviour is
     the old.
     
- 
      get_class() starting PHP 5 returns the name of the
      class as it was declared which may lead to problems in older scripts
      that rely on the previous behaviour (the class name was lowercased).
      A possible solution is to search for get_class() in
      all your scripts and use strtolower().
     
- 
      ip2long() now returns FALSE when an invalid IP
      address is passed as argument to the function, and no longer
      -1.