Annotation of embedaddon/php/ext/mysqli/tests/mysqli_real_connect_pconn.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: mysqli_real_connect() - persistent connections
                      3: --SKIPIF--
                      4: <?php
                      5: require_once('skipif.inc');
                      6: require_once('skipifemb.inc');
                      7: require_once('skipifconnectfailure.inc');
                      8: require_once('connect.inc');
                      9: if (!$IS_MYSQLND)
                     10:        die("skip mysqlnd only test");
                     11: ?>
                     12: --INI--
                     13: mysqli.allow_persistent=1
                     14: mysqli.max_persistent=10
                     15: --FILE--
                     16: <?php
                     17:        require_once("connect.inc");
                     18:        $host = 'p:' . $host;
                     19: 
                     20:        if (!$link = mysqli_init())
                     21:                printf("[002] mysqli_init() failed\n");
                     22: 
                     23:        if (!mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket))
                     24:                printf("[003] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
                     25:                        $host, $user, $db, $port, $socket);
                     26: 
                     27:        mysqli_close($link);
                     28:        if (!$link = mysqli_init())
                     29:                printf("[004] mysqli_init() failed\n");
                     30: 
                     31:        if (false !== ($tmp = mysqli_real_connect($link, $host, $user . 'unknown_really', $passwd . 'non_empty', $db, $port, $socket)))
                     32:                printf("[005] Expecting boolean/false got %s/%s. Can connect to the server using host=%s, user=%s, passwd=***non_empty, dbname=%s, port=%s, socket=%s\n", gettype($tmp), $tmp, $host, $user . 'unknown_really', $db, $port, $socket);
                     33: 
                     34:        // Run the following tests without an anoynmous MySQL user and use a password for the test user!
                     35:        ini_set('mysqli.default_socket', $socket);
                     36:        if (!mysqli_real_connect($link, $host, $user, $passwd, $db, $port)) {
                     37:                printf("[006] Usage of mysqli.default_socket failed\n");
                     38:        } else {
                     39:                mysqli_close($link);
                     40:                if (!$link = mysqli_init())
                     41:                        printf("[007] mysqli_init() failed\n");
                     42:        }
                     43: 
                     44:        ini_set('mysqli.default_port', $port);
                     45:        if (!mysqli_real_connect($link, $host, $user, $passwd, $db)) {
                     46:                printf("[008] Usage of mysqli.default_port failed\n");
                     47:        } else {
                     48:                mysqli_close($link);
                     49:                if (!$link = mysqli_init())
                     50:                        printf("[009] mysqli_init() failed\n");
                     51:        }
                     52: 
                     53:        ini_set('mysqli.default_pw', $passwd);
                     54:        if (!mysqli_real_connect($link, $host, $user)) {
                     55:                printf("[010] Usage of mysqli.default_pw failed\n") ;
                     56:        } else {
                     57:                mysqli_close($link);
                     58:                if (!$link = mysqli_init())
                     59:                        printf("[011] mysqli_init() failed\n");
                     60:        }
                     61: 
                     62:        ini_set('mysqli.default_user', $user);
                     63:        if (!mysqli_real_connect($link, $host)) {
                     64:                printf("[012] Usage of mysqli.default_user failed\n") ;
                     65:        } else {
                     66:                mysqli_close($link);
                     67:                if (!$link = mysqli_init())
                     68:                        printf("[011] mysqli_init() failed\n");
                     69:        }
                     70: 
                     71:        ini_set('mysqli.default_host', $host);
                     72:        if (!mysqli_real_connect($link)) {
                     73:                printf("[014] Usage of mysqli.default_host failed\n") ;
                     74:        } else {
                     75:                mysqli_close($link);
                     76:                if (!$link = mysqli_init())
                     77:                        printf("[015] mysqli_init() failed\n");
                     78:        }
                     79: 
                     80:        // CLIENT_MULTI_STATEMENTS - should be disabled silently
                     81:        if (!mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket, 65536))
                     82:                printf("[016] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                     83: 
                     84:        if ($res = mysqli_query($link, "SELECT 1 AS a; SELECT 2 AS b")) {
                     85:                printf("[017] Should have failed. CLIENT_MULTI_STATEMENT should have been disabled.\n");
                     86:                var_dump($res->num_rows);
                     87:                mysqli_next_result($link);
                     88:                $res = mysqli_store_result($link);
                     89:                var_dump($res->num_rows);
                     90:        }
                     91: 
                     92: 
                     93:        mysqli_close($link);
                     94:        if (!$link = mysqli_init())
                     95:                printf("[018] mysqli_init() failed\n");
                     96: 
                     97:        if (ini_get('open_basedir')) {
                     98:                // CLIENT_LOCAL_FILES should be blocked - but how to test it ?!
                     99: 
                    100:                if (!mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket, 128))
                    101:                        printf("[019] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    102: 
                    103:                $filename = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'mysqli_real_connect_phpt';
                    104:                if (!$fp = fopen($filename, 'w'))
                    105:                        printf("[020] Cannot open temporary file %s\n", $filename);
                    106: 
                    107:                fwrite($fp, '100;z');
                    108:                fclose($fp);
                    109: 
                    110:                // how do we test if gets forbidden because of a missing right or the flag, this test is partly bogus ?
                    111:                if (mysqli_query($link, "LOAD DATA LOCAL INFILE '$filename' INTO TABLE test FIELDS TERMINATED BY ';'"))
                    112:                        printf("[021] LOAD DATA INFILE should have been forbidden!\n");
                    113: 
                    114:                unlink($filename);
                    115:        }
                    116: 
                    117:        mysqli_close($link);
                    118: 
                    119:        if ($IS_MYSQLND) {
                    120:                $link = mysqli_init();
                    121:                if (!@mysqli_real_connect($link)) {
                    122:                        printf("[022] Usage of mysqli.default_host=p:%s (persistent) failed\n", $host) ;
                    123:                } else {
                    124:                        if (!$res = mysqli_query($link, "SELECT 'mysqli.default_host (persistent)' AS 'testing'"))
                    125:                                printf("[023] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                    126:                        $tmp = mysqli_fetch_assoc($res);
                    127:                        if ($tmp['testing'] !== 'mysqli.default_host (persistent)') {
                    128:                                printf("[024] Result looks strange - check manually, [%d] %s\n",
                    129:                                        mysqli_errno($link), mysqli_error($link));
                    130:                                var_dump($tmp);
                    131:                        }
                    132:                        mysqli_free_result($res);
                    133:                        mysqli_close($link);
                    134:                }
                    135: 
                    136:                ini_set('mysqli.default_host', 'p:');
                    137:                $link = mysqli_init();
                    138:                if (@mysqli_real_connect($link)) {
                    139:                        printf("[025] Usage of mysqli.default_host=p: did not fail\n") ;
                    140:                        mysqli_close($link);
                    141:                }
                    142:        }
                    143: 
                    144:        if (NULL === ($tmp = mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket)))
                    145:                printf("[026] Expecting not NULL, got %s/%s\n", gettype($tmp), $tmp);
                    146: 
                    147:        print "done!";
                    148: ?>
                    149: --CLEAN--
                    150: <?php
                    151:        require_once("clean_table.inc");
                    152: ?>
                    153: --EXPECTF--
                    154: Warning: mysqli_real_connect(): (%d/%d): Access denied for user '%s'@'%s' (using password: YES) in %s on line %d
                    155: done!

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>