diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-03-14 05:42:27 +0000 |
---|---|---|
committer | <> | 2013-04-03 16:25:08 +0000 |
commit | c4dd7a1a684490673e25aaf4fabec5df138854c4 (patch) | |
tree | 4d57c44caae4480efff02b90b9be86f44bf25409 /ext/mysql/tests/mysql_query_load_data_openbasedir.phpt | |
download | php2-master.tar.gz |
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/mysql/tests/mysql_query_load_data_openbasedir.phpt')
-rw-r--r-- | ext/mysql/tests/mysql_query_load_data_openbasedir.phpt | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/ext/mysql/tests/mysql_query_load_data_openbasedir.phpt b/ext/mysql/tests/mysql_query_load_data_openbasedir.phpt new file mode 100644 index 0000000..aa15f5c --- /dev/null +++ b/ext/mysql/tests/mysql_query_load_data_openbasedir.phpt @@ -0,0 +1,118 @@ +--TEST-- +LOAD DATA INFILE - open_basedir +--SKIPIF-- +<?php +include_once('skipif.inc'); +include_once('skipifconnectfailure.inc'); + + +if (!$IS_MYSQLND) + die("skip mysqlnd only, libmysql does not know about open_basedir restrictions"); + +if (file_exists('./simple.csv') && !unlink('./simple.csv')) + die("skip Cannot remove previous CSV file"); + +if (!$fp = fopen('./simple.csv', 'w')) + die("skip Cannot create test CSV file"); + +fclose($fp); +@unlink('./simple.csv'); + +if ($socket == "" && $host != NULL && $host != 'localhost' && $host != '.') { + /* could be a remote TCP/IP connection. LOCAL INFILE may not work */ + if (gethostbyaddr($host) != gethostname()) { + die("skip LOAD DATA LOCAL INFILE will fail if connecting to remote MySQL"); + } +} +?> +--FILE-- +<?php +@include_once("connect.inc"); +ini_set("open_basedir", __DIR__); +chdir(__DIR__); +if (!isset($db)) { + // run-tests, I love you for not allowing me to set ini settings dynamically + print "[006] [1148] The used command is not allowed with this MySQL version +[007] [0] +[008] LOAD DATA not run? +[010] [1148] The used command is not allowed with this MySQL version +done!"; + die(); +} +require('table.inc'); +mysql_close($link); +if ($socket) + $host = sprintf("%s:%s", $host, $socket); +else if ($port) + $host = sprintf("%s:%s", $host, $port); + +if (!$link = mysql_connect($host, $user, $passwd, true, 128)) { + printf("[001] Cannot connect using host '%s', user '%s', password '****', [%d] %s\n", + $host, $user, $passwd, + mysql_errno(), mysql_error()); +} + +if (!mysql_select_db($db, $link)) { + printf("[002] [%d] %s\n", mysql_errno($link), mysql_error($link)); +} + +if (file_exists('./simple.csv')) + unlink('./simple.csv'); + +if (!$fp = fopen('./simple.csv', 'w')) + printf("[003] Cannot open CSV file\n"); + +if (version_compare(PHP_VERSION, '5.9.9', '>') >= 0) { + if (!fwrite($fp, (binary)"'97';'x';\n") || + !fwrite($fp, (binary)"'98';'y';\n") || + !fwrite($fp, (binary)"99;'z';\n")) { + printf("[004] Cannot write CVS file '%s'\n", $file); + } +} else { + if (!fwrite($fp, "97;'x';\n") || + !fwrite($fp, "98;'y';\n") || + !fwrite($fp, "99;'z';\n")) { + printf("[005] Cannot write CVS file '%s'\n", $file); + } +} +fclose($fp); + +$sql = sprintf("LOAD DATA LOCAL INFILE '%s' + INTO TABLE test + FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\'' + LINES TERMINATED BY '\n'", + mysql_real_escape_string(realpath('./simple.csv'), $link)); + +if (!mysql_query($sql, $link)) + printf("[006] [%d] %s\n", mysql_errno($link), mysql_error($link)); + +if (!($res = mysql_query('SELECT label FROM test WHERE id = 97', $link)) || + !($row = mysql_fetch_assoc($res)) || + !mysql_free_result($res)) + printf("[007] [%d] '%s'\n", mysql_errno($link), mysql_error($link)); + +if ($row['label'] != "x") + printf("[008] LOAD DATA not run?\n"); + +if (!mysql_query('DELETE FROM test', $link)) + printf("[009] [%d] %s\n", mysql_errno($link), mysql_error($link)); + +$sql = "LOAD DATA LOCAL INFILE '/tmp/idonotexist' + INTO TABLE test + FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\'' + LINES TERMINATED BY '\n'"; + +if (!mysql_query($sql, $link)) + printf("[010] [%d] %s\n", mysql_errno($link), mysql_error($link)); + +mysql_close($link); +unlink("./simple.csv"); + +print "done!"; +?> +--EXPECTF-- +[006] [1148] %s +[007] [0] '' +[008] LOAD DATA not run? +[010] [1148] %s +done! |