本文整理汇总了PHP中adodb_backtrace函数的典型用法代码示例。如果您正苦于以下问题:PHP adodb_backtrace函数的具体用法?PHP adodb_backtrace怎么用?PHP adodb_backtrace使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了adodb_backtrace函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __construct
function __construct($e, $code = 'DBError')
{
global $db, $skip_db_error;
if (isset($skip_db_error_exception) and $skip_db_error_exception === TRUE) {
//Used by system_check script.
return TRUE;
}
$db->FailTrans();
//print_r($e);
//adodb_pr($e);
Debug::Text('Begin Exception...', __FILE__, __LINE__, __METHOD__, 10);
Debug::Arr(Debug::backTrace(), ' BackTrace: ', __FILE__, __LINE__, __METHOD__, 10);
//Log database error
if (isset($e->message)) {
if (stristr($e->message, 'statement timeout') !== FALSE) {
$code = 'DBTimeout';
}
Debug::Text($e->message, __FILE__, __LINE__, __METHOD__, 10);
}
if (isset($e->trace)) {
$e = strip_tags(adodb_backtrace($e->trace));
Debug::Arr($e, 'Exception...', __FILE__, __LINE__, __METHOD__, 10);
}
Debug::Text('End Exception...', __FILE__, __LINE__, __METHOD__, 10);
//Dump debug buffer.
Debug::Display();
Debug::writeToLog();
Debug::emailLog();
Redirect::Page(URLBuilder::getURL(array('exception' => $code), Environment::getBaseURL() . 'DownForMaintenance.php'));
ob_flush();
ob_clean();
exit;
}
示例2: testdb
function testdb(&$db, $createtab = "create table ADOXYZ (id int, firstname char(24), lastname char(24), created date)")
{
global $ADODB_version, $ADODB_FETCH_MODE;
adodb_backtrace();
$max = 100;
$sql = 'select * from ADOXYZ';
$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
//print "<h3>ADODB Version: $ADODB_version Host: <i>$db->host</i> Database: <i>$db->database</i></h3>";
// perform query once to cache results so we are only testing throughput
$rs = $db->Execute($sql);
if (!$rs) {
print "Error in recordset<p>";
return;
}
$arr = $rs->GetArray();
//$db->debug = true;
global $ADODB_COUNTRECS;
$ADODB_COUNTRECS = false;
$start = microtime();
for ($i = 0; $i < $max; $i++) {
$rs =& $db->Execute($sql);
$arr =& $rs->GetArray();
// print $arr[0][1];
}
$end = microtime();
$start = explode(' ', $start);
$end = explode(' ', $end);
//print_r($start);
//print_r($end);
// print_r($arr);
$total = $end[0] + trim($end[1]) - $start[0] - trim($start[1]);
printf("<p>seconds = %8.2f for %d iterations each with %d records</p>", $total, $max, sizeof($arr));
flush();
//$db->Close();
}
示例3: connect
function connect()
{
global $conf_db;
try
{
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$mode ="mysql";
if ($conf_db)
$mode = $conf_db['db_type'];
$this->db= ADONewConnection($mode);
if ($conf_db)
$this->db->Connect($conf_db['db_host'],$conf_db['db_user'],$conf_db['db_pwd'],$conf_db['db_name']) or die("COULD NOT SELECT DATABASE.<br>");
else
$this->db->Connect(HOST,USER,PASS,DB) or die("COULD NOT SELECT DATABASE.<br>");
return 0;
}
catch (exception $e)
{
var_dump($e);
adodb_backtrace($e->gettrace());
$this->message = $e." -> ".$this->db->ErrorMsg();
return 1;
}
}
示例4: __construct
function __construct($e)
{
global $db;
$db->FailTrans();
//print_r($e);
//adodb_pr($e);
//Log database error
if (isset($e->message)) {
Debug::Text($e->message, __FILE__, __LINE__, __METHOD__, 10);
}
if (isset($e->trace)) {
$e = strip_tags(adodb_backtrace($e->trace));
Debug::Arr($e, 'Exception...', __FILE__, __LINE__, __METHOD__, 10);
}
Debug::Arr(Debug::backTrace(), ' BackTrace: ', __FILE__, __LINE__, __METHOD__, 10);
//Dump debug buffer.
Debug::Display();
Debug::writeToLog();
Debug::emailLog();
Redirect::Page(URLBuilder::getURL(array('exception' => 'DBError'), Environment::getBaseURL() . 'DownForMaintenance.php'));
ob_flush();
ob_clean();
exit;
}
示例5: Insert_ID
/**
* @param $table string name of the table, not needed by all databases (eg. mysql), default ''
* @param $column string name of the column, not needed by all databases (eg. mysql), default ''
* @return the last inserted ID. Not all databases support this.
*/
function Insert_ID($table = '', $column = '')
{
if ($this->_logsql && $this->lastInsID) {
return $this->lastInsID;
}
if ($this->hasInsertID) {
return $this->_insertid($table, $column);
}
if ($this->debug) {
ADOConnection::outp('<p>Insert_ID error</p>');
adodb_backtrace();
}
return false;
}
示例6: CacheExecute
/**
* Execute SQL, caching recordsets.
*
* @param [secs2cache] seconds to cache data, set to 0 to force query.
* This is an optional parameter.
* @param sql SQL statement to execute
* @param [inputarr] holds the input data to bind to
* @return RecordSet or false
*/
function CacheExecute($secs2cache, $sql = false, $inputarr = false)
{
global $ADODB_CACHE;
if (empty($ADODB_CACHE)) {
$this->_CreateCache();
}
if (!is_numeric($secs2cache)) {
$inputarr = $sql;
$sql = $secs2cache;
$secs2cache = $this->cacheSecs;
}
if (is_array($sql)) {
$sqlparam = $sql;
$sql = $sql[0];
} else {
$sqlparam = $sql;
}
$md5file = $this->_gencachename($sql . serialize($inputarr), true);
$err = '';
if ($secs2cache > 0) {
$rs = $ADODB_CACHE->readcache($md5file, $err, $secs2cache, $this->arrayClass);
$this->numCacheHits += 1;
} else {
$err = 'Timeout 1';
$rs = false;
$this->numCacheMisses += 1;
}
if (!$rs) {
// no cached rs found
if ($this->debug) {
if (get_magic_quotes_runtime() && !$this->memCache) {
ADOConnection::outp("Please disable magic_quotes_runtime - it corrupts cache files :(");
}
if ($this->debug !== -1) {
ADOConnection::outp(" {$md5file} cache failure: {$err} (this is a notice and not an error)");
}
}
$rs = $this->Execute($sqlparam, $inputarr);
if ($rs) {
$eof = $rs->EOF;
$rs = $this->_rs2rs($rs);
// read entire recordset into memory immediately
$rs->timeCreated = time();
// used by caching
$txt = _rs2serialize($rs, false, $sql);
// serialize
$ok = $ADODB_CACHE->writecache($md5file, $txt, $this->debug, $secs2cache);
if (!$ok) {
if ($ok === false) {
$em = 'Cache write error';
$en = -32000;
if ($fn = $this->raiseErrorFn) {
$fn($this->databaseType, 'CacheExecute', $en, $em, $md5file, $sql, $this);
}
} else {
$em = 'Cache file locked warning';
$en = -32001;
// do not call error handling for just a warning
}
if ($this->debug) {
ADOConnection::outp(" " . $em);
}
}
if ($rs->EOF && !$eof) {
$rs->MoveFirst();
//$rs = csv2rs($md5file,$err);
$rs->connection = $this;
// Pablo suggestion
}
} else {
if (!$this->memCache) {
$ADODB_CACHE->flushcache($md5file);
}
}
} else {
$this->_errorMsg = '';
$this->_errorCode = 0;
if ($this->fnCacheExecute) {
$fn = $this->fnCacheExecute;
$fn($this, $secs2cache, $sql, $inputarr);
}
// ok, set cached object found
$rs->connection = $this;
// Pablo suggestion
if ($this->debug) {
if ($this->debug == 99) {
adodb_backtrace();
}
$inBrowser = isset($_SERVER['HTTP_USER_AGENT']);
$ttl = $rs->timeCreated + $secs2cache - time();
$s = is_array($sql) ? $sql[0] : $sql;
//.........这里部分代码省略.........
示例7: _fetch
function _fetch($ignore_fields = false)
{
if ($this->connection->debug) {
error_log("_fetch()");
}
if ($this->fetchMode & ADODB_FETCH_ASSOC) {
if ($this->fetchMode & ADODB_FETCH_NUM) {
if ($this->connection->debug) {
error_log("fetch mode: both");
}
$this->fields = @sqlsrv_fetch_array($this->_queryID, SQLSRV_FETCH_BOTH);
} else {
if ($this->connection->debug) {
error_log("fetch mode: assoc");
}
$this->fields = @sqlsrv_fetch_array($this->_queryID, SQLSRV_FETCH_ASSOC);
}
if (ADODB_ASSOC_CASE == 0) {
foreach ($this->fields as $k => $v) {
$this->fields[strtolower($k)] = $v;
}
} else {
if (ADODB_ASSOC_CASE == 1) {
foreach ($this->fields as $k => $v) {
$this->fields[strtoupper($k)] = $v;
}
}
}
} else {
if ($this->connection->debug) {
error_log("fetch mode: num");
}
$this->fields = @sqlsrv_fetch_array($this->_queryID, SQLSRV_FETCH_NUMERIC);
}
if (is_array($this->fields) && array_key_exists(1, $this->fields) && !array_key_exists(0, $this->fields)) {
//fix fetch numeric keys since they're not 0 based
$arrFixed = array();
foreach ($this->fields as $key => $value) {
if (is_numeric($key)) {
$arrFixed[$key - 1] = $value;
} else {
$arrFixed[$key] = $value;
}
}
//if($this->connection->debug) error_log("<hr>fixing non 0 based return array, old: ".print_r($this->fields,true)." new: ".print_r($arrFixed,true));
$this->fields = $arrFixed;
}
if (is_array($this->fields)) {
foreach ($this->fields as $key => $value) {
if (is_object($value) && method_exists($value, 'format')) {
//is DateTime object
$this->fields[$key] = $value->format("Y-m-d\\TH:i:s\\Z");
}
}
}
if ($this->fields === null) {
$this->fields = false;
}
if ($this->connection->debug) {
error_log("<hr>after _fetch, fields: <pre>" . print_r($this->fields, true) . " backtrace: " . adodb_backtrace(false));
}
return $this->fields;
}
示例8: ADORecordSet_empty
}
$rs = new ADORecordSet_empty();
foreach ($rs as $v) {
echo "<p>empty ";
var_dump($v);
}
if ($i != $cnt) {
die("actual cnt is {$i}, cnt should be {$cnt}\n");
} else {
echo "Count {$i} is correct<br>";
}
$rs = $db->Execute("select bad from badder");
} catch (exception $e) {
adodb_pr($e);
echo "<h3>adodb_backtrace:</h3>\n";
$e = adodb_backtrace($e->gettrace());
}
$rs = $db->Execute("select distinct id, firstname,lastname from adoxyz order by id");
echo "Result=\n", $rs, "</p>";
echo "<h3>Active Record</h3>";
include_once "../adodb-active-record.inc.php";
ADOdb_Active_Record::SetDatabaseAdapter($db);
try {
class City extends ADOdb_Active_Record
{
}
$a = new City();
} catch (exception $e) {
echo $e->getMessage();
}
try {
示例9: Lim
V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jlim#natsoft.com.my). All rights reserved.
Released under both BSD license and Lesser GPL library license.
Whenever there is any discrepancy between the two licenses,
the BSD license will take precedence.
Set tabs to 8.
*/
error_reporting(E_ALL);
$path = dirname(__FILE__);
include "{$path}/../adodb-exceptions.inc.php";
include "{$path}/../adodb.inc.php";
try {
$db = NewADOConnection("oci8");
$db->Connect('', 'scott', 'natsoft');
$db->debug = 1;
$cnt = $db->GetOne("select count(*) from adoxyz");
$rs = $db->Execute("select * from adoxyz order by id");
$i = 0;
foreach ($rs as $k => $v) {
$i += 1;
echo $k;
adodb_pr($v);
flush();
}
if ($i != $cnt) {
die("actual cnt is {$i}, cnt should be {$cnt}\n");
}
$rs = $db->Execute("select bad from badder");
} catch (exception $e) {
adodb_pr($e);
$e = adodb_backtrace($e->trace);
}
示例10: qstr
/**
* Quotes a string.
* An example is $db->qstr("Don't bother",magic_quotes_runtime());
*
* @param s the string to quote
* @param [magic_quotes] if $s is GET/POST var, set to get_magic_quotes_gpc().
* This undoes the stupidity of magic quotes for GPC.
*
* @return quoted string to be sent back to database
*/
function qstr($s, $magic_quotes = false)
{
$nofixquotes = false;
if (is_array($s)) {
adodb_backtrace();
}
if ($this->noNullStrings && strlen($s) == 0) {
$s = ' ';
}
if (!$magic_quotes) {
if ($this->replaceQuote[0] == '\\') {
$s = str_replace('\\', '\\\\', $s);
}
return "'" . str_replace("'", $this->replaceQuote, $s) . "'";
}
// undo magic quotes for "
$s = str_replace('\\"', '"', $s);
if ($this->replaceQuote == "\\'") {
// ' already quoted, no need to change anything
return "'{$s}'";
} else {
// change \' to '' for sybase/mssql
$s = str_replace('\\\\', '\\', $s);
return "'" . str_replace("\\'", $this->replaceQuote, $s) . "'";
}
}
示例11: foreach
function &_Execute($sql, $inputarr = false)
{
// debug version of query
if ($this->debug) {
global $HTTP_SERVER_VARS;
$ss = '';
if ($inputarr) {
foreach ($inputarr as $kk => $vv) {
if (is_string($vv) && strlen($vv) > 64) {
$vv = substr($vv, 0, 64) . '...';
}
$ss .= "({$kk}=>'{$vv}') ";
}
$ss = "[ {$ss} ]";
}
$sqlTxt = str_replace(',', ', ', is_array($sql) ? $sql[0] : $sql);
// check if running from browser or command-line
$inBrowser = isset($HTTP_SERVER_VARS['HTTP_USER_AGENT']);
if ($inBrowser) {
if ($this->debug === -1) {
ADOConnection::outp("<br>\n({$this->databaseType}): " . htmlspecialchars($sqlTxt) . " <code>{$ss}</code>\n<br>\n", false);
} else {
ADOConnection::outp("<hr />\n({$this->databaseType}): " . htmlspecialchars($sqlTxt) . " <code>{$ss}</code>\n<hr />\n", false);
}
} else {
ADOConnection::outp("=----\n({$this->databaseType}): " . $sqlTxt . " \n-----\n", false);
}
flush();
$this->_queryID = $this->_query($sql, $inputarr);
/*
Alexios Fakios notes that ErrorMsg() must be called before ErrorNo() for mssql
because ErrorNo() calls Execute('SELECT @ERROR'), causing recure
*/
if ($this->databaseType == 'mssql') {
// ErrorNo is a slow function call in mssql, and not reliable
// in PHP 4.0.6
if ($emsg = $this->ErrorMsg()) {
$err = $this->ErrorNo();
if ($err) {
ADOConnection::outp($err . ': ' . $emsg);
flush();
}
}
} else {
if (!$this->_queryID) {
$e = $this->ErrorNo();
$m = $this->ErrorMsg();
ADOConnection::outp($e . ': ' . $m);
flush();
}
}
} else {
// non-debug version of query
$this->_queryID = @$this->_query($sql, $inputarr);
}
/************************
OK, query executed
*************************/
// error handling if query fails
if ($this->_queryID === false) {
if ($this->debug == 99) {
adodb_backtrace(true, 5);
}
$fn = $this->raiseErrorFn;
if ($fn) {
$fn($this->databaseType, 'EXECUTE', $this->ErrorNo(), $this->ErrorMsg(), $sql, $inputarr, $this);
}
return false;
} else {
if ($this->_queryID === true) {
// return simplified empty recordset for inserts/updates/deletes with lower overhead
$rs =& new ADORecordSet_empty();
return $rs;
}
}
// return real recordset from select statement
$rsclass = $this->rsPrefix . $this->databaseType;
$rs =& new $rsclass($this->_queryID, $this->fetchMode);
// &new not supported by older PHP versions
$rs->connection =& $this;
// Pablo suggestion
$rs->Init();
if (is_array($sql)) {
$rs->sql = $sql[0];
} else {
$rs->sql = $sql;
}
if ($rs->_numOfRows <= 0) {
global $ADODB_COUNTRECS;
if ($ADODB_COUNTRECS) {
if (!$rs->EOF) {
$rs =& $this->_rs2rs($rs, -1, -1, !is_array($sql));
$rs->_queryID = $this->_queryID;
} else {
$rs->_numOfRows = 0;
}
}
}
return $rs;
}
示例12: Insert_ID
/**
* @return the last inserted ID. Not all databases support this.
*/
function Insert_ID()
{
if ($this->_logsql && $this->lastInsID) return $this->lastInsID;
if ($this->hasInsertID) return $this->_insertid();
if ($this->debug) {
ADOConnection::outp( '<p>Insert_ID error</p>');
adodb_backtrace();
}
return false;
}
示例13: error_handler
function error_handler($errno, $errmsg, $filename, $linenum, $vars)
{
// Custom error-handling function.
// Sends an email to BUGSLIST.
global $PAGE;
// define an assoc array of error string
// in reality the only entries we should
// consider are E_WARNING, E_NOTICE, E_USER_ERROR,
// E_USER_WARNING and E_USER_NOTICE
$errortype = array(E_ERROR => "Error", E_WARNING => "Warning", E_PARSE => "Parsing Error", E_NOTICE => "Notice", E_CORE_ERROR => "Core Error", E_CORE_WARNING => "Core Warning", E_COMPILE_ERROR => "Compile Error", E_COMPILE_WARNING => "Compile Warning", E_USER_ERROR => "User Error", E_USER_WARNING => "User Warning", E_USER_NOTICE => "User Notice", 2048 => "Runtime Notice");
$err = '';
if (isset($_SERVER['REQUEST_URI'])) {
$err .= "URL:\t\thttp://" . DOMAIN . $_SERVER['REQUEST_URI'] . "\n";
} else {
$err .= "URL:\t\tNone - running from command line?\n";
}
if (isset($_SERVER['HTTP_REFERER'])) {
$err .= "Referer:\t" . $_SERVER['HTTP_REFERER'] . "\n";
} else {
$err .= "Referer:\tNone\n";
}
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$err .= "User-Agent:\t" . $_SERVER['HTTP_USER_AGENT'] . "\n";
} else {
$err .= "User-Agent:\tNone\n";
}
$err .= "Number:\t\t{$errno}\n";
$err .= "Type:\t\t" . $errortype[$errno] . "\n";
$err .= "Message:\t{$errmsg}\n";
$err .= "File:\t\t{$filename}\n";
$err .= "Line:\t\t{$linenum}\n";
if (count($_POST)) {
$err .= "_POST:";
foreach ($_POST as $k => $v) {
$err .= "\t\t{$k} => {$v}\n";
}
}
// I'm not sure this bit is actually any use!
// set of errors for which a var trace will be saved.
// $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);
// if (in_array($errno, $user_errors)) {
// $err .= "Variables:\t" . serialize($vars) . "\n";
// }
// Add the problematic line if possible.
if (is_readable($filename)) {
$source = file($filename);
$err .= "\nSource:\n\n";
// Show the line, plus prev and next, with line numbers.
$err .= $linenum - 2 . " " . $source[$linenum - 3];
$err .= $linenum - 1 . " " . $source[$linenum - 2];
$err .= $linenum . " " . $source[$linenum - 1];
$err .= $linenum + 1 . " " . $source[$linenum];
$err .= $linenum + 2 . " " . $source[$linenum + 1];
}
// Will we need to exit after this error?
$fatal_errors = array(E_ERROR, E_USER_ERROR);
if (in_array($errno, $fatal_errors)) {
$fatal = true;
} else {
$fatal = false;
}
// Finally, display errors and stuff...
if (DEVSITE) {
// On a devsite we just display the problem.
$message = array('title' => "Error", 'text' => "{$err}\n");
if (is_object($PAGE)) {
$PAGE->error_message($message, $fatal);
vardump(adodb_backtrace());
} else {
vardump($message);
vardump(adodb_backtrace());
}
} else {
// On live sites we display a nice message and email the problem.
$message = array('title' => "Sorry, an error has occurred", 'text' => "We've been notified by email and will try to fix the problem soon!");
if (is_object($PAGE)) {
$PAGE->error_message($message, $fatal);
} else {
header('HTTP/1.0 500 Internal Server Error');
print "<p>Oops, sorry, an error has occurred!</p>\n";
}
if (!($errno & E_USER_NOTICE)) {
mail(BUGSLIST, "[TWFYBUG]: {$errmsg}", $err, "From: Bug <" . CONTACTEMAIL . ">\n" . "X-Mailer: PHP/" . phpversion());
}
}
// Do we need to exit?
if ($fatal) {
exit(1);
}
}
示例14: error_handler
function error_handler($errno, $errmsg, $filename, $linenum, $vars)
{
$errortype = array(E_ERROR => "Error", E_WARNING => "Warning", E_PARSE => "Parsing Error", E_NOTICE => "Notice", E_CORE_ERROR => "Core Error", E_CORE_WARNING => "Core Warning", E_COMPILE_ERROR => "Compile Error", E_COMPILE_WARNING => "Compile Warning", E_USER_ERROR => "User Error", E_USER_WARNING => "User Warning", E_USER_NOTICE => "User Notice", E_STRICT => "PHP 5 Strict Notice", E_RECOVERABLE_ERROR => 'PHP 5.2 Recoverable Error');
//check error is of an appropriate level
$errors_to_report = bit_compactor(ini_get('error_reporting'));
if (!in_array($errno, $errors_to_report)) {
// There's nothing to report here
return;
}
//get the back trace
$backtrace = debug_backtrace();
$backtrace = array_slice($backtrace, 1);
//make the message
$fatal_errors = array(E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR, E_RECOVERABLE_ERROR);
$err = '';
if (isset($_SERVER['REQUEST_URI'])) {
$err .= "URL:\t\thttp://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] . "\n";
} else {
$err .= "URL:\t\tNone - running from command line?\n";
}
if (isset($_SERVER['HTTP_REFERER'])) {
$err .= "Referer:\t" . $_SERVER['HTTP_REFERER'] . "\n";
} else {
$err .= "Referer:\tNone\n";
}
if (isset($_SERVER['REMOTE_ADDR'])) {
$err .= "REMOTE IP:\t" . $_SERVER['REMOTE_ADDR'] . "\n";
} else {
$err .= "REMOTE IP:\tNone\n";
}
if (isset($_SERVER['SERVER_ADDR'])) {
$err .= "SERVER ADDR:\t" . $_SERVER['SERVER_ADDR'] . "\n";
} else {
$err .= "SERVER_ADDR:\tNone\n";
}
if (isset($_SERVER['REQUEST_METHOD'])) {
$err .= "REQUEST METHOD:\t" . $_SERVER['REQUEST_METHOD'] . "\n";
} else {
$err .= "REQUEST METHOD:\tNone\n";
}
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$err .= "User-Agent:\t" . $_SERVER['HTTP_USER_AGENT'] . "\n";
} else {
$err .= "User-Agent:\tNone\n";
}
$err .= "Number:\t\t{$errno}\n";
$err .= "Type:\t\t" . $errortype[$errno] . "\n";
$err .= "Message:\t{$errmsg}\n";
$err .= "File:\t\t{$filename}\n";
$err .= "Line:\t\t{$linenum}\n";
// Add in the suplimentry data
if (isset($GLOBALS['_REPORT_ERROR_MESSAGE']) && !empty($GLOBALS['_REPORT_ERROR_MESSAGE'])) {
$err .= "Info:\t\t" . $GLOBALS['_REPORT_ERROR_MESSAGE'] . "\n";
unset($GLOBALS['_REPORT_ERROR_MESSAGE']);
}
// get the details of where the error is
if (is_readable($filename)) {
$source = file($filename);
$err .= "\nSource:\n\n";
// show the line, plus prev and next, with line numbers.
$err .= $linenum - 2 . " " . $source[$linenum - 3];
$err .= $linenum - 1 . " " . $source[$linenum - 2];
$err .= "<b>" . $linenum . " " . $source[$linenum - 1] . "</b>";
$err .= $linenum + 1 . " " . $source[$linenum];
$err .= $linenum + 2 . " " . $source[$linenum + 1];
}
// add in the back trace
$err .= "\nBacktrace:\n " . adodb_backtrace(false, $backtrace);
// Now we want to add in the session, request and suplimentry data
if (isset($_REQUEST) && is_array($_REQUEST) && count($_REQUEST) > 0) {
$err .= "\nREQUEST Data:\n\n";
$err .= print_r($_REQUEST, true);
}
if (isset($GLOBALS['_REPORT_ERROR_DATA'])) {
$err .= "\nADDITIONAL Data:\n\n";
$err .= print_r($GLOBALS['_REPORT_ERROR_DATA'], true);
unset($GLOBALS['_REPORT_ERROR_DATA']);
}
//anything useful in the session
if (isset($_SESSION) && is_array($_SESSION) && count($_SESSION) > 0) {
$session = $_SESSION;
$err .= "\nSESSION Data:\n\n";
$err .= print_r($session, true);
}
//either display the message on screen or email it (if on the live site)
$fatal = false;
if (DEVSITE) {
print '<pre>' . $err . '</pre>';
} else {
//send the email
$subject = BUG_EMAIL_PREFIX . ' ' . ($errno != E_USER_WARNING ? 'FATAL ' : 'WARNING ') . (defined('APP_NAME') ? '(' . APP_NAME . ') ' : '') . $errmsg;
send_text_email(BUG_TO_EMAIL, BUG_EMAIL_PREFIX, BUG_FROM_EMAIL, $subject, $err);
if ($errno != E_USER_WARNING) {
//tell people something bad happened
print '<div style="text-align:center;">';
print '<h1>Sorry, something went wrong</h1>';
print '<h3>An email has been sent to the geeks!</h3>';
print '<p><a href="http://www.thestraightchoice.org">click here to go back to the homepage</a></p>';
print '</div>';
$fatal = true;
//.........这里部分代码省略.........
示例15: openConnection
/**
* Open a database connection
*
* @return boolean success
*/
function openConnection()
{
$success = true;
// No need to open a connection if it is
// already open - just use the existing one!
if ($this->_conn == null) {
try {
$this->_conn = ADONewConnection(FT_DB_DSN);
} catch (exception $e) {
$success = false;
$this->setErrorMsg($this->_conn->ErrorMsg());
if (FT_DEBUG) {
var_dump($e);
adodb_backtrace($e->gettrace());
}
}
}
$this->_conn->debug = FT_DEBUG;
$this->_conn->SetFetchMode($this->getOutput());
return $success;
}