migration52-php-error-messages-6

  • Migrating from PHP 5.1.x to PHP
    5.2.x
  • New Error Messages

  • New Error Messages
  • New Error Messages

    New Error Messages

    Below are the new error messages that have not been
    discussed elsewhere in this document.

    Example #1 In PHP Core

    <?php
    echo " ";
    session_regenerate_id();
    /*  Warning:  session_regenerate_id(): Cannot regenerate
        session id - headers already sent in filename on line n */

    str_word_count("string"4);
    /* Warning:  str_word_count(): Invalid format value 4
       in filename on line n */

    strripos("foo""f"4);
    /* Notice:  strripos(): Offset is greater than the
       length of haystack string in filename on line n */

    strrpos("foo""f"4);
    /* Notice:  strrpos(): Offset is greater than the
       length of haystack string in filename on line n */

    /* As of PHP 5.2.1, when allow_url_include is OFF (default) */
    include "php://input";
    /* Warning:  include(): URL file-access is disabled
       in the server configuration in filename on line n */
    ?>

    Example #2 Object Oriented Code in PHP Core

    <?php
    interface foo {
    }
    class 
    bar implements foofoo {
    }
    /* Fatal error: Class bar cannot implement previously
       implemented interface foo in filename on line n */

    class foo {
        public 
    $bar;
        function 
    __get($var)
        {
            return 
    $this->bar;
        }
    }

    $foo = new foo;
    $bar =& $foo->prop;
    /* Notice: Indirect modification of overloaded property
       foo::$prop has no effect in filename on line n */

    class foo implements iterator {
        public function 
    current() {
        }
        public function 
    next() {
        }
        public function 
    key() {
        }
        public function 
    valid() {
        }
        public function 
    rewind() {
        }
    }

    $foo = new foo();
    foreach(
    $foo as &$ref) {}
    /* Fatal error: An iterator cannot be used with foreach
       by reference in filename on line n */

    class foo {
        private function 
    __construct() {
        }
    }
    class 
    bar extends foo {
        public function 
    __construct() {
            
    parent::__construct();
            
    /* Fatal error:  Cannot call private
               foo::__construct() in filename on line n */
        
    }
    }
    new 
    bar;

    stream_filter_register("""class");
    /* Warning:  stream_filter_register(): Filter name
       cannot be empty in filename on line n */

    stream_filter_register("filter""");
    /* Warning:  stream_filter_register(): Class name
       cannot be empty in filename on line n */
    ?>

    Example #3 In the bzip2 Extension

    <?php
    bzopen
    ("""w");
    /* Warning:  bzopen(): filename cannot be empty
       in filename on line n */

    bzopen("foo""a");
    /* Warning:  bzopen(): 'a' is not a valid mode for
       bzopen(). Only 'w' and 'r' are supported in
       filename on line n */

    $fp fopen("foo""w");
    bzopen($fp"r");
    /* Warning:  bzopen(): cannot read from a stream
       opened in write only mode in filename on line n */
    ?>

    Example #4 In the datetime Extension

    <?php
    strtotime
    ("today""now");
    /* Warning:  strtotime() expects parameter 2 to be
       long, string given in filename on line n */

    /* As of PHP 5.2.1 */
    new DateTime(new stdclass);
    /* Fatal error: Uncaught exception 'Exception' with
       message 'DateTime::__construct() expects parameter
       1 to be string, object given' in filename:n */
    ?>

    Example #5 In the dBase Extension

    <?php
    dbase_open
    ("foo", -1);
    /* Warning: Invalid access mode -1 in filename on line n */

    /* As of PHP 5.2.1 */
    dbase_open("foo"null);
    /* Warning: The filename cannot be empty in filename on line n */
    ?>

    Example #6 In the mcrypt Extension

    <?php
    $key 
    "this is a secret key";
    $td mcrypt_module_open('tripledes''''ecb''');
    $iv mcrypt_create_iv (mcrypt_enc_get_iv_size($td),
                            
    MCRYPT_RAND);
    mcrypt_generic_init($td$key$iv);
    $encrypted_data mcrypt_generic($td"");
    /* Warning: mcrypt_generic(): An empty string was
       passed in filename on line n */
    ?>

    Example #7 In the oci8 Extension

    <?php
    oci_connect
    ("user""pass""db""bogus_charset");
    /* Warning: Invalid character set name:
       bogus_charset in filename on line n */

    $oci oci_connect("user""pass""db");
    oci_password_change($oci"""old""new");
    /* Warning: username cannot be empty in filename
       on line n */

    oci_password_change($oci"user""""new");
    /* Warning: old password cannot be empty in filename
       on line n */

    oci_password_change($oci"user""old""");
    /* Warning: new password cannot be empty in filename
       on line n */
    ?>

    Example #8 In the SPL Extension

    <?php
    $obj 
    = new SplFileObject(__FILE__);
    $obj->fgetcsv("foo");
    /* Warning:  SplFileObject::fgetcsv(): delimiter must
       be a character in filename on line n */

    $obj->fgetcsv(",""foo");
    /* Warning:  SplFileObject::fgetcsv(): enclosure must
       be a character in filename on line n */
    ?>

    Example #9 In the Semaphore (sysvmsg) extension

    <?php
    /* Warning:  maximum size of the message has to be
       greater then zero in filename on line n */
    ?>

    Example #10 A 5.2.1+ Zip Example

    <?php
    $obj 
    = new ZipArchive();
    $obj->open('archive.zip');
    $obj->setCommentName('''comment');
    /* Notice:  ZipArchive::setCommentName(): Empty string
       as entry name in filename on line n */

    /* As of PHP 5.2.1 */
    $obj->getCommentName('');
    /* Notice:  ZipArchive::getCommentName(): Empty string
       as entry name in filename on line n */
    ?>