1--TEST-- 2mysqli_debug() - append to trace file 3--SKIPIF-- 4<?php 5require_once('skipif.inc'); 6require_once('skipifemb.inc'); 7require_once('skipifconnectfailure.inc'); 8 9if (!function_exists('mysqli_debug')) 10 die("skip: mysqli_debug() not available"); 11 12if (!defined('MYSQLI_DEBUG_TRACE_ENABLED')) 13 die("skip: can't say for sure if mysqli_debug works"); 14 15if (defined('MYSQLI_DEBUG_TRACE_ENABLED') && !MYSQLI_DEBUG_TRACE_ENABLED) 16 die("skip: debug functionality not enabled"); 17 18if (!$IS_MYSQLND) 19 die("SKIP Libmysql feature not sufficiently spec'd in MySQL C API documentation"); 20?> 21--FILE-- 22<?php 23 require_once('connect.inc');; 24 25 if (true !== ($tmp = mysqli_debug(sprintf('d:t:O,%s/mysqli_debug_phpt.trace', sys_get_temp_dir())))) 26 printf("[001] Expecting boolean/true, got %s/%s\n", gettype($tmp), $tmp); 27 28 // table.inc will create a database connection and run some SQL queries, therefore 29 // the debug file should have entries 30 require_once('table.inc'); 31 32 clearstatcache(); 33 $trace_file = sprintf('%s/mysqli_debug_phpt.trace', sys_get_temp_dir()); 34 if (!file_exists($trace_file)) 35 printf("[002] Trace file '%s' has not been created\n", $trace_file); 36 if (filesize($trace_file) < 50) 37 printf("[003] Trace file '%s' is very small. filesize() reports only %d bytes. Please check.\n", 38 $trace_file, 39 filesize($trace_file)); 40 41 // will mysqli_debug() mind if the trace file gets removed? 42 unlink($trace_file); 43 clearstatcache(); 44 45 if (!$fp = fopen($trace_file, 'w')) { 46 printf("[004] Cannot create trace file to test append mode\n"); 47 } else { 48 49 if (!fwrite($fp, (binary) 'mysqli_debug.phpt test line')) 50 printf("[005] Cannot write to trace file.\n"); 51 fclose($fp); 52 53 if (true !== ($tmp = mysqli_debug(sprintf('d:a,%s', $trace_file)))) 54 printf("[006] Expecting boolean/true, got %s/%s\n", gettype($tmp), $tmp); 55 56 if (!$res = mysqli_query($link, 'SELECT * FROM test')) 57 printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 58 else 59 mysqli_free_result($res); 60 61 $trace = file_get_contents($trace_file); 62 if (!strstr($trace, 'mysqli_debug.phpt test line')) 63 printf("[008] Cannot find original file content any more. Seems that the trace file got overwritten and not appended. Please check."); 64 65 if (true !== ($tmp = mysqli_debug(sprintf('d:A,%s', $trace_file)))) 66 printf("[009] Expecting boolean/true, got %s/%s\n", gettype($tmp), $tmp); 67 68 if (!$res = mysqli_query($link, 'SELECT * FROM test')) 69 printf("[010] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 70 else 71 mysqli_free_result($res); 72 73 if (!strstr(file_get_contents($trace_file), $trace)) 74 printf("[011] Cannot find original file content any more. Seems that the trace file got overwritten and not appended. Please check."); 75 } 76 77 // what will happen if we create new trace entries...? 78 unlink($trace_file); 79 clearstatcache(); 80 if (file_exists($trace_file)) 81 printf("[012] Could not remove trace file '%s'.\n", $trace_file); 82 83 mysqli_close($link); 84 print "done"; 85 if ($IS_MYSQLND) 86 print "libmysql/DBUG package prints some debug info here." 87?> 88--CLEAN-- 89<?php 90 require_once("clean_table.inc"); 91?> 92--EXPECTF-- 93done%s 94