Annotation of embedaddon/php/ext/mysql/tests/mysql_query_load_data_openbasedir.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: LOAD DATA INFILE - open_basedir
                      3: --SKIPIF--
                      4: <?php
                      5: @include_once("connect.inc");
                      6: 
                      7: if (!isset($db)) {
                      8:   die("skip open_basedir setting prevents inclusing of required files");
                      9: }
                     10: 
                     11: include_once('skipif.inc');
                     12: include_once('skipifconnectfailure.inc');
                     13: 
                     14: 
                     15: if (!$IS_MYSQLND)
                     16:        die("skip mysqlnd only, libmysql does not know about open_basedir restrictions");
                     17: 
                     18: if (file_exists('./simple.csv') && !unlink('./simple.csv'))
                     19:        die("skip Cannot remove previous CSV file");
                     20: 
                     21: if (!$fp = fopen('./simple.csv', 'w'))
                     22:        die("skip Cannot create test CSV file");
                     23: 
                     24: fclose($fp);
                     25: @unlink('./simple.csv');
                     26: 
                     27: if ($socket == "" && $host != NULL && $host != 'localhost' && $host != '.') {
                     28:        /* could be a remote TCP/IP connection. LOCAL INFILE may not work */
                     29:        if (gethostbyaddr($host) != gethostname()) {
                     30:                die("skip LOAD DATA LOCAL INFILE will fail if connecting to remote MySQL");
                     31:        }
                     32: }
                     33: ?>
                     34: --INI--
                     35: open_basedir="."
                     36: --FILE--
                     37: <?php
                     38: @include_once("connect.inc");
                     39: 
                     40: if (!isset($db)) {
                     41:        // run-tests, I love you for not allowing me to set ini settings dynamically
                     42:        print "[006] [1148] The used command is not allowed with this MySQL version
                     43: [007] [0]
                     44: [008] LOAD DATA not run?
                     45: [010] [1148] The used command is not allowed with this MySQL version
                     46: done!";
                     47:        die();
                     48: }
                     49: require('table.inc');
                     50: mysql_close($link);
                     51: if ($socket)
                     52:        $host = sprintf("%s:%s", $host, $socket);
                     53: else if ($port)
                     54:        $host = sprintf("%s:%s", $host, $port);
                     55: 
                     56: if (!$link = mysql_connect($host, $user, $passwd, true, 128)) {
                     57:        printf("[001] Cannot connect using host '%s', user '%s', password '****', [%d] %s\n",
                     58:                $host, $user, $passwd,
                     59:                mysql_errno(), mysql_error());
                     60: }
                     61: 
                     62: if (!mysql_select_db($db, $link)) {
                     63:        printf("[002] [%d] %s\n", mysql_errno($link), mysql_error($link));
                     64: }
                     65: 
                     66: if (file_exists('./simple.csv'))
                     67:        unlink('./simple.csv');
                     68: 
                     69: if (!$fp = fopen('./simple.csv', 'w'))
                     70:        printf("[003] Cannot open CSV file\n");
                     71: 
                     72: if (version_compare(PHP_VERSION, '5.9.9', '>') >= 0) {
                     73:        if (!fwrite($fp, (binary)"'97';'x';\n") ||
                     74:                !fwrite($fp, (binary)"'98';'y';\n") ||
                     75:                !fwrite($fp, (binary)"99;'z';\n")) {
                     76:                printf("[004] Cannot write CVS file '%s'\n", $file);
                     77:        }
                     78: } else {
                     79:        if (!fwrite($fp, "97;'x';\n") ||
                     80:                !fwrite($fp, "98;'y';\n") ||
                     81:                !fwrite($fp, "99;'z';\n")) {
                     82:                printf("[005] Cannot write CVS file '%s'\n", $file);
                     83:        }
                     84: }
                     85: fclose($fp);
                     86: 
                     87: $sql = sprintf("LOAD DATA LOCAL INFILE '%s'
                     88:                        INTO TABLE test
                     89:                        FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\''
                     90:                        LINES TERMINATED BY '\n'",
                     91:                        mysql_real_escape_string(realpath('./simple.csv'), $link));
                     92: 
                     93: if (!mysql_query($sql, $link))
                     94:        printf("[006] [%d] %s\n", mysql_errno($link), mysql_error($link));
                     95: 
                     96: if (!($res = mysql_query('SELECT label FROM test WHERE id = 97', $link)) ||
                     97:                !($row = mysql_fetch_assoc($res)) ||
                     98:                !mysql_free_result($res))
                     99:        printf("[007] [%d] '%s'\n", mysql_errno($link), mysql_error($link));
                    100: 
                    101: if ($row['label'] != "x")
                    102:        printf("[008] LOAD DATA not run?\n");
                    103: 
                    104: if (!mysql_query('DELETE FROM test', $link))
                    105:        printf("[009] [%d] %s\n", mysql_errno($link), mysql_error($link));
                    106: 
                    107: $sql = "LOAD DATA LOCAL INFILE '/tmp/idonotexist'
                    108:                        INTO TABLE test
                    109:                        FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\''
                    110:                        LINES TERMINATED BY '\n'";
                    111: 
                    112: if (!mysql_query($sql, $link))
                    113:        printf("[010] [%d] %s\n", mysql_errno($link), mysql_error($link));
                    114: 
                    115: mysql_close($link);
                    116: unlink("./simple.csv");
                    117: 
                    118: print "done!";
                    119: ?>
                    120: --EXPECTF--
                    121: [006] [1148] %s
                    122: [007] [0] ''
                    123: [008] LOAD DATA not run?
                    124: [010] [1148] %s
                    125: done!

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