@@ -45,7 +45,7 @@ discard block |
||
| 45 | 45 | $backtrace = debug_backtrace(); |
| 46 | 46 | |
| 47 | 47 | // are we in a loop? |
| 48 | - if($error_call > 2) |
|
| 48 | + if ($error_call > 2) |
|
| 49 | 49 | { |
| 50 | 50 | var_dump($backtrace); |
| 51 | 51 | die('Error loop.'); |
@@ -549,7 +549,7 @@ discard block |
||
| 549 | 549 | $url['error'] = $error; |
| 550 | 550 | // Url field got a max length of 1024 in db |
| 551 | 551 | if (strlen($url['error']) > 500) |
| 552 | - $url['error'] = substr($url['error'],0,500); |
|
| 552 | + $url['error'] = substr($url['error'], 0, 500); |
|
| 553 | 553 | |
| 554 | 554 | if (!empty($sprintf)) |
| 555 | 555 | $url['error_params'] = $sprintf; |
@@ -15,8 +15,9 @@ discard block |
||
| 15 | 15 | * @version 2.1 Beta 4 |
| 16 | 16 | */ |
| 17 | 17 | |
| 18 | -if (!defined('SMF')) |
|
| 18 | +if (!defined('SMF')) { |
|
| 19 | 19 | die('No direct access...'); |
| 20 | +} |
|
| 20 | 21 | |
| 21 | 22 | /** |
| 22 | 23 | * Log an error, if the error logging is enabled. |
@@ -39,10 +40,11 @@ discard block |
||
| 39 | 40 | $error_call++; |
| 40 | 41 | |
| 41 | 42 | // Collect a backtrace |
| 42 | - if (!isset($db_show_debug) || $db_show_debug === false) |
|
| 43 | - $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); |
|
| 44 | - else |
|
| 45 | - $backtrace = debug_backtrace(); |
|
| 43 | + if (!isset($db_show_debug) || $db_show_debug === false) { |
|
| 44 | + $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); |
|
| 45 | + } else { |
|
| 46 | + $backtrace = debug_backtrace(); |
|
| 47 | + } |
|
| 46 | 48 | |
| 47 | 49 | // are we in a loop? |
| 48 | 50 | if($error_call > 2) |
@@ -52,8 +54,9 @@ discard block |
||
| 52 | 54 | } |
| 53 | 55 | |
| 54 | 56 | // Check if error logging is actually on. |
| 55 | - if (empty($modSettings['enableErrorLogging'])) |
|
| 56 | - return $error_message; |
|
| 57 | + if (empty($modSettings['enableErrorLogging'])) { |
|
| 58 | + return $error_message; |
|
| 59 | + } |
|
| 57 | 60 | |
| 58 | 61 | // Basically, htmlspecialchars it minus &. (for entities!) |
| 59 | 62 | $error_message = strtr($error_message, array('<' => '<', '>' => '>', '"' => '"')); |
@@ -61,33 +64,39 @@ discard block |
||
| 61 | 64 | |
| 62 | 65 | // Add a file and line to the error message? |
| 63 | 66 | // Don't use the actual txt entries for file and line but instead use %1$s for file and %2$s for line |
| 64 | - if ($file == null) |
|
| 65 | - $file = ''; |
|
| 66 | - else |
|
| 67 | - // Window style slashes don't play well, lets convert them to the unix style. |
|
| 67 | + if ($file == null) { |
|
| 68 | + $file = ''; |
|
| 69 | + } else { |
|
| 70 | + // Window style slashes don't play well, lets convert them to the unix style. |
|
| 68 | 71 | $file = str_replace('\\', '/', $file); |
| 72 | + } |
|
| 69 | 73 | |
| 70 | - if ($line == null) |
|
| 71 | - $line = 0; |
|
| 72 | - else |
|
| 73 | - $line = (int) $line; |
|
| 74 | + if ($line == null) { |
|
| 75 | + $line = 0; |
|
| 76 | + } else { |
|
| 77 | + $line = (int) $line; |
|
| 78 | + } |
|
| 74 | 79 | |
| 75 | 80 | // Just in case there's no id_member or IP set yet. |
| 76 | - if (empty($user_info['id'])) |
|
| 77 | - $user_info['id'] = 0; |
|
| 78 | - if (empty($user_info['ip'])) |
|
| 79 | - $user_info['ip'] = ''; |
|
| 81 | + if (empty($user_info['id'])) { |
|
| 82 | + $user_info['id'] = 0; |
|
| 83 | + } |
|
| 84 | + if (empty($user_info['ip'])) { |
|
| 85 | + $user_info['ip'] = ''; |
|
| 86 | + } |
|
| 80 | 87 | |
| 81 | 88 | // Find the best query string we can... |
| 82 | 89 | $query_string = empty($_SERVER['QUERY_STRING']) ? (empty($_SERVER['REQUEST_URL']) ? '' : str_replace($scripturl, '', $_SERVER['REQUEST_URL'])) : $_SERVER['QUERY_STRING']; |
| 83 | 90 | |
| 84 | 91 | // Don't log the session hash in the url twice, it's a waste. |
| 85 | - if (!empty($smcFunc['htmlspecialchars'])) |
|
| 86 | - $query_string = $smcFunc['htmlspecialchars']((SMF == 'SSI' || SMF == 'BACKGROUND' ? '' : '?') . preg_replace(array('~;sesc=[^&;]+~', '~' . session_name() . '=' . session_id() . '[&;]~'), array(';sesc', ''), $query_string)); |
|
| 92 | + if (!empty($smcFunc['htmlspecialchars'])) { |
|
| 93 | + $query_string = $smcFunc['htmlspecialchars']((SMF == 'SSI' || SMF == 'BACKGROUND' ? '' : '?') . preg_replace(array('~;sesc=[^&;]+~', '~' . session_name() . '=' . session_id() . '[&;]~'), array(';sesc', ''), $query_string)); |
|
| 94 | + } |
|
| 87 | 95 | |
| 88 | 96 | // Just so we know what board error messages are from. |
| 89 | - if (isset($_POST['board']) && !isset($_GET['board'])) |
|
| 90 | - $query_string .= ($query_string == '' ? 'board=' : ';board=') . $_POST['board']; |
|
| 97 | + if (isset($_POST['board']) && !isset($_GET['board'])) { |
|
| 98 | + $query_string .= ($query_string == '' ? 'board=' : ';board=') . $_POST['board']; |
|
| 99 | + } |
|
| 91 | 100 | |
| 92 | 101 | // What types of categories do we have? |
| 93 | 102 | $known_error_types = array( |
@@ -140,9 +149,9 @@ discard block |
||
| 140 | 149 | |
| 141 | 150 | list($context['num_errors']) = $smcFunc['db_fetch_row']($query); |
| 142 | 151 | $smcFunc['db_free_result']($query); |
| 152 | + } else { |
|
| 153 | + $context['num_errors']++; |
|
| 143 | 154 | } |
| 144 | - else |
|
| 145 | - $context['num_errors']++; |
|
| 146 | 155 | } |
| 147 | 156 | |
| 148 | 157 | // reset error call |
@@ -164,12 +173,14 @@ discard block |
||
| 164 | 173 | global $txt; |
| 165 | 174 | |
| 166 | 175 | // Send the appropriate HTTP status header - set this to 0 or false if you don't want to send one at all |
| 167 | - if (!empty($status)) |
|
| 168 | - send_http_status($status); |
|
| 176 | + if (!empty($status)) { |
|
| 177 | + send_http_status($status); |
|
| 178 | + } |
|
| 169 | 179 | |
| 170 | 180 | // We don't have $txt yet, but that's okay... |
| 171 | - if (empty($txt)) |
|
| 172 | - die($error); |
|
| 181 | + if (empty($txt)) { |
|
| 182 | + die($error); |
|
| 183 | + } |
|
| 173 | 184 | |
| 174 | 185 | log_error_online($error, false); |
| 175 | 186 | setup_fatal_error_context($log ? log_error($error, $log) : $error); |
@@ -196,8 +207,9 @@ discard block |
||
| 196 | 207 | static $fatal_error_called = false; |
| 197 | 208 | |
| 198 | 209 | // Send the status header - set this to 0 or false if you don't want to send one at all |
| 199 | - if (!empty($status)) |
|
| 200 | - send_http_status($status); |
|
| 210 | + if (!empty($status)) { |
|
| 211 | + send_http_status($status); |
|
| 212 | + } |
|
| 201 | 213 | |
| 202 | 214 | // Try to load a theme if we don't have one. |
| 203 | 215 | if (empty($context['theme_loaded']) && empty($fatal_error_called)) |
@@ -207,8 +219,9 @@ discard block |
||
| 207 | 219 | } |
| 208 | 220 | |
| 209 | 221 | // If we have no theme stuff we can't have the language file... |
| 210 | - if (empty($context['theme_loaded'])) |
|
| 211 | - die($error); |
|
| 222 | + if (empty($context['theme_loaded'])) { |
|
| 223 | + die($error); |
|
| 224 | + } |
|
| 212 | 225 | |
| 213 | 226 | $reload_lang_file = true; |
| 214 | 227 | // Log the error in the forum's language, but don't waste the time if we aren't logging |
@@ -244,8 +257,9 @@ discard block |
||
| 244 | 257 | global $settings, $modSettings, $db_show_debug; |
| 245 | 258 | |
| 246 | 259 | // Ignore errors if we're ignoring them or they are strict notices from PHP 5 |
| 247 | - if (error_reporting() == 0) |
|
| 248 | - return; |
|
| 260 | + if (error_reporting() == 0) { |
|
| 261 | + return; |
|
| 262 | + } |
|
| 249 | 263 | |
| 250 | 264 | if (strpos($file, 'eval()') !== false && !empty($settings['current_include_filename'])) |
| 251 | 265 | { |
@@ -253,19 +267,22 @@ discard block |
||
| 253 | 267 | $count = count($array); |
| 254 | 268 | for ($i = 0; $i < $count; $i++) |
| 255 | 269 | { |
| 256 | - if ($array[$i]['function'] != 'loadSubTemplate') |
|
| 257 | - continue; |
|
| 270 | + if ($array[$i]['function'] != 'loadSubTemplate') { |
|
| 271 | + continue; |
|
| 272 | + } |
|
| 258 | 273 | |
| 259 | 274 | // This is a bug in PHP, with eval, it seems! |
| 260 | - if (empty($array[$i]['args'])) |
|
| 261 | - $i++; |
|
| 275 | + if (empty($array[$i]['args'])) { |
|
| 276 | + $i++; |
|
| 277 | + } |
|
| 262 | 278 | break; |
| 263 | 279 | } |
| 264 | 280 | |
| 265 | - if (isset($array[$i]) && !empty($array[$i]['args'])) |
|
| 266 | - $file = realpath($settings['current_include_filename']) . ' (' . $array[$i]['args'][0] . ' sub template - eval?)'; |
|
| 267 | - else |
|
| 268 | - $file = realpath($settings['current_include_filename']) . ' (eval?)'; |
|
| 281 | + if (isset($array[$i]) && !empty($array[$i]['args'])) { |
|
| 282 | + $file = realpath($settings['current_include_filename']) . ' (' . $array[$i]['args'][0] . ' sub template - eval?)'; |
|
| 283 | + } else { |
|
| 284 | + $file = realpath($settings['current_include_filename']) . ' (eval?)'; |
|
| 285 | + } |
|
| 269 | 286 | } |
| 270 | 287 | |
| 271 | 288 | if (isset($db_show_debug) && $db_show_debug === true) |
@@ -274,8 +291,9 @@ discard block |
||
| 274 | 291 | if ($error_level % 255 != E_ERROR) |
| 275 | 292 | { |
| 276 | 293 | $temporary = ob_get_contents(); |
| 277 | - if (substr($temporary, -2) == '="') |
|
| 278 | - echo '"'; |
|
| 294 | + if (substr($temporary, -2) == '="') { |
|
| 295 | + echo '"'; |
|
| 296 | + } |
|
| 279 | 297 | } |
| 280 | 298 | |
| 281 | 299 | // Debugging! This should look like a PHP error message. |
@@ -291,23 +309,27 @@ discard block |
||
| 291 | 309 | call_integration_hook('integrate_output_error', array($message, $error_type, $error_level, $file, $line)); |
| 292 | 310 | |
| 293 | 311 | // Dying on these errors only causes MORE problems (blank pages!) |
| 294 | - if ($file == 'Unknown') |
|
| 295 | - return; |
|
| 312 | + if ($file == 'Unknown') { |
|
| 313 | + return; |
|
| 314 | + } |
|
| 296 | 315 | |
| 297 | 316 | // If this is an E_ERROR or E_USER_ERROR.... die. Violently so. |
| 298 | - if ($error_level % 255 == E_ERROR) |
|
| 299 | - obExit(false); |
|
| 300 | - else |
|
| 301 | - return; |
|
| 317 | + if ($error_level % 255 == E_ERROR) { |
|
| 318 | + obExit(false); |
|
| 319 | + } else { |
|
| 320 | + return; |
|
| 321 | + } |
|
| 302 | 322 | |
| 303 | 323 | // If this is an E_ERROR, E_USER_ERROR, E_WARNING, or E_USER_WARNING.... die. Violently so. |
| 304 | - if ($error_level % 255 == E_ERROR || $error_level % 255 == E_WARNING) |
|
| 305 | - fatal_error(allowedTo('admin_forum') ? $message : $error_string, false); |
|
| 324 | + if ($error_level % 255 == E_ERROR || $error_level % 255 == E_WARNING) { |
|
| 325 | + fatal_error(allowedTo('admin_forum') ? $message : $error_string, false); |
|
| 326 | + } |
|
| 306 | 327 | |
| 307 | 328 | // We should NEVER get to this point. Any fatal error MUST quit, or very bad things can happen. |
| 308 | - if ($error_level % 255 == E_ERROR) |
|
| 309 | - die('No direct access...'); |
|
| 310 | -} |
|
| 329 | + if ($error_level % 255 == E_ERROR) { |
|
| 330 | + die('No direct access...'); |
|
| 331 | + } |
|
| 332 | + } |
|
| 311 | 333 | |
| 312 | 334 | /** |
| 313 | 335 | * It is called by {@link fatal_error()} and {@link fatal_lang_error()}. |
@@ -323,24 +345,28 @@ discard block |
||
| 323 | 345 | |
| 324 | 346 | // Attempt to prevent a recursive loop. |
| 325 | 347 | ++$level; |
| 326 | - if ($level > 1) |
|
| 327 | - return false; |
|
| 348 | + if ($level > 1) { |
|
| 349 | + return false; |
|
| 350 | + } |
|
| 328 | 351 | |
| 329 | 352 | // Maybe they came from dlattach or similar? |
| 330 | - if (SMF != 'SSI' && SMF != 'BACKGROUND' && empty($context['theme_loaded'])) |
|
| 331 | - loadTheme(); |
|
| 353 | + if (SMF != 'SSI' && SMF != 'BACKGROUND' && empty($context['theme_loaded'])) { |
|
| 354 | + loadTheme(); |
|
| 355 | + } |
|
| 332 | 356 | |
| 333 | 357 | // Don't bother indexing errors mate... |
| 334 | 358 | $context['robot_no_index'] = true; |
| 335 | 359 | |
| 336 | - if (!isset($context['error_title'])) |
|
| 337 | - $context['error_title'] = $txt['error_occured']; |
|
| 360 | + if (!isset($context['error_title'])) { |
|
| 361 | + $context['error_title'] = $txt['error_occured']; |
|
| 362 | + } |
|
| 338 | 363 | $context['error_message'] = isset($context['error_message']) ? $context['error_message'] : $error_message; |
| 339 | 364 | |
| 340 | 365 | $context['error_code'] = isset($error_code) ? 'id="' . $error_code . '" ' : ''; |
| 341 | 366 | |
| 342 | - if (empty($context['page_title'])) |
|
| 343 | - $context['page_title'] = $context['error_title']; |
|
| 367 | + if (empty($context['page_title'])) { |
|
| 368 | + $context['page_title'] = $context['error_title']; |
|
| 369 | + } |
|
| 344 | 370 | |
| 345 | 371 | loadTemplate('Errors'); |
| 346 | 372 | $context['sub_template'] = 'fatal_error'; |
@@ -348,23 +374,26 @@ discard block |
||
| 348 | 374 | // If this is SSI, what do they want us to do? |
| 349 | 375 | if (SMF == 'SSI') |
| 350 | 376 | { |
| 351 | - if (!empty($ssi_on_error_method) && $ssi_on_error_method !== true && is_callable($ssi_on_error_method)) |
|
| 352 | - $ssi_on_error_method(); |
|
| 353 | - elseif (empty($ssi_on_error_method) || $ssi_on_error_method !== true) |
|
| 354 | - loadSubTemplate('fatal_error'); |
|
| 377 | + if (!empty($ssi_on_error_method) && $ssi_on_error_method !== true && is_callable($ssi_on_error_method)) { |
|
| 378 | + $ssi_on_error_method(); |
|
| 379 | + } elseif (empty($ssi_on_error_method) || $ssi_on_error_method !== true) { |
|
| 380 | + loadSubTemplate('fatal_error'); |
|
| 381 | + } |
|
| 355 | 382 | |
| 356 | 383 | // No layers? |
| 357 | - if (empty($ssi_on_error_method) || $ssi_on_error_method !== true) |
|
| 358 | - exit; |
|
| 384 | + if (empty($ssi_on_error_method) || $ssi_on_error_method !== true) { |
|
| 385 | + exit; |
|
| 386 | + } |
|
| 359 | 387 | } |
| 360 | 388 | // Alternatively from the cron call? |
| 361 | 389 | elseif (SMF == 'BACKGROUND') |
| 362 | 390 | { |
| 363 | 391 | // We can't rely on even having language files available. |
| 364 | - if (defined('FROM_CLI') && FROM_CLI) |
|
| 365 | - echo 'cron error: ', $context['error_message']; |
|
| 366 | - else |
|
| 367 | - echo 'An error occurred. More information may be available in your logs.'; |
|
| 392 | + if (defined('FROM_CLI') && FROM_CLI) { |
|
| 393 | + echo 'cron error: ', $context['error_message']; |
|
| 394 | + } else { |
|
| 395 | + echo 'An error occurred. More information may be available in your logs.'; |
|
| 396 | + } |
|
| 368 | 397 | exit; |
| 369 | 398 | } |
| 370 | 399 | |
@@ -392,8 +421,8 @@ discard block |
||
| 392 | 421 | |
| 393 | 422 | set_fatal_error_headers(); |
| 394 | 423 | |
| 395 | - if (!empty($maintenance)) |
|
| 396 | - echo '<!DOCTYPE html> |
|
| 424 | + if (!empty($maintenance)) { |
|
| 425 | + echo '<!DOCTYPE html> |
|
| 397 | 426 | <html> |
| 398 | 427 | <head> |
| 399 | 428 | <meta name="robots" content="noindex"> |
@@ -404,6 +433,7 @@ discard block |
||
| 404 | 433 | ', $mmessage, ' |
| 405 | 434 | </body> |
| 406 | 435 | </html>'; |
| 436 | + } |
|
| 407 | 437 | |
| 408 | 438 | die(); |
| 409 | 439 | } |
@@ -425,15 +455,17 @@ discard block |
||
| 425 | 455 | // For our purposes, we're gonna want this on if at all possible. |
| 426 | 456 | $modSettings['cache_enable'] = '1'; |
| 427 | 457 | |
| 428 | - if (($temp = cache_get_data('db_last_error', 600)) !== null) |
|
| 429 | - $db_last_error = max($db_last_error, $temp); |
|
| 458 | + if (($temp = cache_get_data('db_last_error', 600)) !== null) { |
|
| 459 | + $db_last_error = max($db_last_error, $temp); |
|
| 460 | + } |
|
| 430 | 461 | |
| 431 | 462 | if ($db_last_error < time() - 3600 * 24 * 3 && empty($maintenance) && !empty($db_error_send)) |
| 432 | 463 | { |
| 433 | 464 | // Avoid writing to the Settings.php file if at all possible; use shared memory instead. |
| 434 | 465 | cache_put_data('db_last_error', time(), 600); |
| 435 | - if (($temp = cache_get_data('db_last_error', 600)) === null) |
|
| 436 | - logLastDatabaseError(); |
|
| 466 | + if (($temp = cache_get_data('db_last_error', 600)) === null) { |
|
| 467 | + logLastDatabaseError(); |
|
| 468 | + } |
|
| 437 | 469 | |
| 438 | 470 | // Language files aren't loaded yet :(. |
| 439 | 471 | $db_error = @$smcFunc['db_error']($db_connection); |
@@ -490,8 +522,9 @@ discard block |
||
| 490 | 522 | */ |
| 491 | 523 | function set_fatal_error_headers() |
| 492 | 524 | { |
| 493 | - if (headers_sent()) |
|
| 494 | - return; |
|
| 525 | + if (headers_sent()) { |
|
| 526 | + return; |
|
| 527 | + } |
|
| 495 | 528 | |
| 496 | 529 | // Don't cache this page! |
| 497 | 530 | header('expires: Mon, 26 Jul 1997 05:00:00 GMT'); |
@@ -517,12 +550,14 @@ discard block |
||
| 517 | 550 | global $smcFunc, $user_info, $modSettings; |
| 518 | 551 | |
| 519 | 552 | // Don't bother if Who's Online is disabled. |
| 520 | - if (empty($modSettings['who_enabled'])) |
|
| 521 | - return; |
|
| 553 | + if (empty($modSettings['who_enabled'])) { |
|
| 554 | + return; |
|
| 555 | + } |
|
| 522 | 556 | |
| 523 | 557 | // Maybe they came from SSI or similar where sessions are not recorded? |
| 524 | - if (SMF == 'SSI' || SMF == 'BACKGROUND') |
|
| 525 | - return; |
|
| 558 | + if (SMF == 'SSI' || SMF == 'BACKGROUND') { |
|
| 559 | + return; |
|
| 560 | + } |
|
| 526 | 561 | |
| 527 | 562 | $session_id = !empty($user_info['is_guest']) ? 'ip' . $user_info['ip'] : session_id(); |
| 528 | 563 | |
@@ -548,11 +583,13 @@ discard block |
||
| 548 | 583 | $url = $smcFunc['json_decode']($url, true); |
| 549 | 584 | $url['error'] = $error; |
| 550 | 585 | // Url field got a max length of 1024 in db |
| 551 | - if (strlen($url['error']) > 500) |
|
| 552 | - $url['error'] = substr($url['error'],0,500); |
|
| 586 | + if (strlen($url['error']) > 500) { |
|
| 587 | + $url['error'] = substr($url['error'],0,500); |
|
| 588 | + } |
|
| 553 | 589 | |
| 554 | - if (!empty($sprintf)) |
|
| 555 | - $url['error_params'] = $sprintf; |
|
| 590 | + if (!empty($sprintf)) { |
|
| 591 | + $url['error_params'] = $sprintf; |
|
| 592 | + } |
|
| 556 | 593 | |
| 557 | 594 | $smcFunc['db_query']('', ' |
| 558 | 595 | UPDATE {db_prefix}log_online |
@@ -583,10 +620,11 @@ discard block |
||
| 583 | 620 | |
| 584 | 621 | $protocol = preg_match('~HTTP/1\.[01]~i', $_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0'; |
| 585 | 622 | |
| 586 | - if (!isset($statuses[$code])) |
|
| 587 | - header($protocol . ' 500 Internal Server Error'); |
|
| 588 | - else |
|
| 589 | - header($protocol . ' ' . $code . ' ' . $statuses[$code]); |
|
| 590 | -} |
|
| 623 | + if (!isset($statuses[$code])) { |
|
| 624 | + header($protocol . ' 500 Internal Server Error'); |
|
| 625 | + } else { |
|
| 626 | + header($protocol . ' ' . $code . ' ' . $statuses[$code]); |
|
| 627 | + } |
|
| 628 | + } |
|
| 591 | 629 | |
| 592 | 630 | ?> |
| 593 | 631 | \ No newline at end of file |