bug68077.phpt 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. --TEST--
  2. Bug #68077 (LOAD DATA LOCAL INFILE / open_basedir restriction)
  3. --EXTENSIONS--
  4. mysqli
  5. --SKIPIF--
  6. <?php
  7. require_once('skipifconnectfailure.inc');
  8. if (!$IS_MYSQLND) {
  9. die("skip: test applies only to mysqlnd");
  10. }
  11. if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
  12. die("skip Cannot connect to MySQL");
  13. include_once("local_infile_tools.inc");
  14. if ($msg = check_local_infile_support($link, $engine))
  15. die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error));
  16. mysqli_close($link);
  17. ?>
  18. --INI--
  19. mysqli.allow_local_infile=1
  20. mysqli.allow_persistent=1
  21. mysqli.max_persistent=1
  22. open_basedir=
  23. --FILE--
  24. <?php
  25. require_once("connect.inc");
  26. ini_set("open_basedir", __DIR__);
  27. if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
  28. printf("[001] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
  29. }
  30. if (!$link->query("DROP TABLE IF EXISTS test")) {
  31. printf("[002] [%d] %s\n", $link->errno, $link->error);
  32. }
  33. if (!$link->query("CREATE TABLE test (dump1 INT UNSIGNED NOT NULL PRIMARY KEY) ENGINE=" . $engine)) {
  34. printf("[003] [%d] %s\n", $link->errno, $link->error);
  35. }
  36. if (FALSE == file_put_contents(__DIR__ . '/bug53503.data', "1\n2\n3\n"))
  37. printf("[004] Failed to create CVS file\n");
  38. if (!$link->query("SELECT 1 FROM DUAL"))
  39. printf("[005] [%d] %s\n", $link->errno, $link->error);
  40. if (!$link->query("LOAD DATA LOCAL INFILE '" . str_replace("\\", "/", __DIR__) . "/bug53503.data' INTO TABLE test")) {
  41. printf("[006] [%d] %s\n", $link->errno, $link->error);
  42. echo "bug\n";
  43. } else {
  44. echo "done\n";
  45. }
  46. ini_set("open_basedir", __DIR__ . "/dummy");
  47. if (!$link->query("LOAD DATA LOCAL INFILE '" . __DIR__ . "/bug53503.data' INTO TABLE test")) {
  48. printf("[006] [%d] %s\n", $link->errno, $link->error);
  49. echo "done\n";
  50. } else {
  51. echo "bug\n";
  52. }
  53. $link->close();
  54. ?>
  55. --CLEAN--
  56. <?php
  57. require_once('connect.inc');
  58. if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
  59. printf("[clean] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
  60. $host, $user, $db, $port, $socket);
  61. }
  62. if (!$link->query($link, 'DROP TABLE IF EXISTS test')) {
  63. printf("[clean] Failed to drop old test table: [%d] %s\n", mysqli_errno($link), mysqli_error($link));
  64. }
  65. $link->close();
  66. unlink('bug53503.data');
  67. ?>
  68. --EXPECT--
  69. done
  70. [006] [2000] open_basedir restriction in effect. Unable to open file
  71. done