Exception
Stack frames (20)
19
Exception
…/src/Routers/Router.php199
18
Mvc\Routers\Router
handle
…/src/Routers/Router.php98
17
Mvc\Routers\Router
handleRoute
…/src/Routers/Router.php86
16
Mvc\Routers\Router
route
/var/www/html/store/site/assets/cache/FileCompiler/site/templates/brands.php10
15
require
/var/www/html/store/wire/core/TemplateFile.php327
14
ProcessWire\TemplateFile
___render
/var/www/html/store/wire/core/Wire.php414
13
ProcessWire\Wire
_callMethod
/var/www/html/store/wire/core/WireHooks.php951
12
ProcessWire\WireHooks
runHooks
/var/www/html/store/wire/core/Wire.php485
11
ProcessWire\Wire
__call
/var/www/html/store/wire/modules/PageRender.module554
10
ProcessWire\PageRender
___renderPage
/var/www/html/store/wire/core/Wire.php417
9
ProcessWire\Wire
_callMethod
/var/www/html/store/wire/core/WireHooks.php951
8
ProcessWire\WireHooks
runHooks
/var/www/html/store/wire/core/Wire.php485
7
ProcessWire\Wire
__call
/var/www/html/store/wire/core/WireHooks.php1059
6
ProcessWire\WireHooks
runHooks
/var/www/html/store/wire/core/Wire.php485
5
ProcessWire\Wire
__call
/var/www/html/store/wire/modules/Process/ProcessPageView.module225
4
ProcessWire\ProcessPageView
renderPage
/var/www/html/store/wire/modules/Process/ProcessPageView.module171
3
ProcessWire\ProcessPageView
___execute
/var/www/html/store/wire/core/Wire.php417
2
ProcessWire\Wire
_callMethod
/var/www/html/store/wire/core/WireHooks.php951
1
ProcessWire\WireHooks
runHooks
/var/www/html/store/wire/core/Wire.php485
0
ProcessWire\Wire
__call
/var/www/html/store/index.php55
/var/www/html/store/site/modules/Pauldro/Mvc/src/Routers/Router.php
* Call the Handler Function
* @param array $routeInfo
* @return mixed
*/
public function handle($routeInfo) {
if ($this->exists($routeInfo) === false) {
throw new Wire404Exception();
}
$handler = $routeInfo[1];
$class = $handler[0];
if (class_exists($class) == false) {
throw new Exception("Class $class does not exist");
}
$methodName = strtoupper($handler[1]);
if (method_exists($class, $methodName) === false) {
throw new Exception("Class Method $class::$methodName does not exist");
}
$vars = (object) $routeInfo[2];
$vars = array_merge((array) $this->params(), (array) $vars);
// convert array to object:
// $vars = json_decode(json_encode($vars));
$data = new WireData();
$data->setArray($vars);
return $class::$methodName($data);
}
public function params($index = null, $default = null, $source = null) {
// check for php://input and merge with $_REQUEST
if ((isset($_SERVER['CONTENT_TYPE']) &&
stripos($_SERVER['CONTENT_TYPE'], 'application/json') !== false) ||
(isset($_SERVER['HTTP_CONTENT_TYPE']) &&
stripos($_SERVER['HTTP_CONTENT_TYPE'], 'application/json') !== false) // PHP build in Webserver !?
) {
if ($json = json_decode(@file_get_contents('php://input'), true)) {
/var/www/html/store/site/modules/Pauldro/Mvc/src/Routers/Router.php
if (array_key_exists(2, $this->routeInfo)) {
$params = $this->routeInfo[2];
if (array_key_exists('pagenbr', $params)) {
$input->setPageNum(intval($params['pagenbr']));
}
}
return $this->handleRoute($this->routeInfo);
}
/**
* Try Calling the Handler Function, catch errors if needed
* @param array $routeInfo
* @return strings
*/
protected function handleRoute() {
$response = '';
try {
$response = $this->handle($this->routeInfo);
} catch (Wire404Exception $e) {
$this->error = true;
throw $e;
} catch (Exception $e) {
$this->error = true;
$response = $this->handleException($e);
}
return $response;
}
/**
* Return Response after Handling Exception
* @param Exception $e
* @return string
*/
protected function handleException(Exception $e) {
$whoops = new Whoops();
$whoops->allowQuit(false);
$whoops->writeToOutput(false);
$whoops->pushHandler($this->getWhoopsEmailPageHandler());
/var/www/html/store/site/modules/Pauldro/Mvc/src/Routers/Router.php
public function setRoutePrefix($prefix = '') {
$this->routeprefix = $prefix;
}
/**
* Return Route Handler Call
* @return mixed
*/
public function route() {
$input = $this->wire('input');
$dispatcher = $this->dispatcher();
$this->routeInfo = $dispatcher->dispatch($input->requestMethod(), $input->url());
if (array_key_exists(2, $this->routeInfo)) {
$params = $this->routeInfo[2];
if (array_key_exists('pagenbr', $params)) {
$input->setPageNum(intval($params['pagenbr']));
}
}
return $this->handleRoute($this->routeInfo);
}
/**
* Try Calling the Handler Function, catch errors if needed
* @param array $routeInfo
* @return strings
*/
protected function handleRoute() {
$response = '';
try {
$response = $this->handle($this->routeInfo);
} catch (Wire404Exception $e) {
$this->error = true;
throw $e;
} catch (Exception $e) {
$this->error = true;
$response = $this->handleException($e);
}
return $response;
/var/www/html/store/site/assets/cache/FileCompiler/site/templates/brands.php
<?php
use Controllers\Brands;
$routes = [
['GET', '', \ProcessWire\Brands::class, 'index'],
];
$router = new Mvc\Routers\Router();
$router->setRoutes($routes);
$router->setRoutePrefix($page->url);
$page->html = $router->route();
include(\ProcessWire\wire('files')->compile(\ProcessWire\wire("config")->paths->root . 'site/templates/basic-page.php',array('includes'=>true,'namespace'=>true,'modules'=>true,'skipIfNamespace'=>true)));
/var/www/html/store/wire/core/TemplateFile.php
try {
// include prepend files
foreach($this->prependFilename as $_filename) {
if($this->halt) break;
$this->fileReady($_filename);
require($_filename);
$this->fileFinished();
}
} catch(\Exception $e) {
if($this->fileFailed($this->currentFilename, $e)) throw $this->renderFailed($e);
}
if($this->halt) {
// if prepend file indicates we should halt, then do not render next file
$this->returnValue = 0;
} else {
// include main file to render
try {
$this->fileReady($this->filename);
$this->returnValue = require($this->filename);
$this->fileFinished();
} catch(\Exception $e) {
if($this->fileFailed($this->filename, $e)) throw $this->renderFailed($e);
}
}
try {
// include append files
foreach($this->appendFilename as $_filename) {
if($this->halt) break;
$this->fileReady($_filename);
require($_filename);
$this->fileFinished();
}
} catch(\Exception $e) {
if($this->fileFailed($this->currentFilename, $e)) throw $this->renderFailed($e);
}
$out = ob_get_contents();
ob_end_clean();
/var/www/html/store/wire/core/Wire.php
public function setLocalHooks(array $hooks) {
$this->localHooks = $hooks;
}
/**
* Call a method in this object, for use by WireHooks
*
* #pw-internal
*
* @param string $method
* @param array $arguments
* @return mixed
*
*/
public function _callMethod($method, $arguments) {
$qty = $arguments ? count($arguments) : 0;
$result = null;
switch($qty) {
case 0:
$result = $this->$method();
break;
case 1:
$result = $this->$method($arguments[0]);
break;
case 2:
$result = $this->$method($arguments[0], $arguments[1]);
break;
case 3:
$result = $this->$method($arguments[0], $arguments[1], $arguments[2]);
break;
default:
$result = call_user_func_array(array($this, $method), $arguments);
}
return $result;
}
/**
* Call a hook method (optimization when it's known for certain the method exists)
*
* #pw-internal
/var/www/html/store/wire/core/WireHooks.php
'return' => null,
'numHooksRun' => 0,
'methodExists' => $methodExists,
'replace' => false,
);
if($type === 'method' || $type === 'property' || $type === 'either') {
if(!$methodExists && !$this->isHookedOrParents($object, $method, $type)) {
return $result; // exit quickly when we can
}
}
if($hooks === null) $hooks = $this->getHooks($object, $method);
foreach(array('before', 'after') as $when) {
if($type === 'method') {
if($when === 'after' && $result['replace'] !== true) {
if($methodExists) {
$result['return'] = $object->_callMethod($realMethod, $arguments);
} else {
$result['return'] = null;
}
}
} else if($type === 'after') {
if($when === 'before') continue;
} else if($type === 'before') {
if($when === 'after') break;
}
foreach($hooks as $priority => $hook) {
if(!$hook['options'][$when]) continue;
if($type === 'property' && $hook['options']['type'] === 'method') continue;
if($type === 'method' && $hook['options']['type'] === 'property') continue;
if(!empty($hook['options']['objMatch'])) {
/** @var Selectors $objMatch */
$objMatch = $hook['options']['objMatch'];
// object match comparison to determine at runtime whether to execute the hook
/var/www/html/store/wire/core/Wire.php
* See the Wire::runHooks() method for the full implementation of hook calls.
*
* @param string $method
* @param array $arguments
* @return mixed
* @throws WireException
*
*/
public function __call($method, $arguments) {
if(empty($arguments) && Fuel::isCommon($method)) {
// faster version of _callWireAPI for when conditions allow
if($this->_wire && !method_exists($this, "___$method")) {
// get a common API var with no arguments as method call more quickly
$val = $this->_wire->fuel($method);
if($val !== null) return $val;
}
}
$hooks = $this->_wireHooks();
if($hooks) {
$result = $hooks->runHooks($this, $method, $arguments);
if(!$result['methodExists'] && !$result['numHooksRun']) {
$result = $this->_callWireAPI($method, $arguments);
if(!$result) return $this->callUnknown($method, $arguments);
}
} else {
$result = $this->_callWireAPI($method, $arguments);
if(!$result) return $this->___callUnknown($method, $arguments);
}
return $result['return'];
}
/**
* Helper to __call() method that maps a call to an API variable when appropriate
*
* @param string $method
* @param array $arguments
* @return array|bool
* @internal
*
*/
/var/www/html/store/wire/modules/PageRender.module
} else {
throw new WireException("Invalid output file location or specified file does not exist. $setFilename");
}
} else {
if($compiler) {
$options['filename'] = $compiler->compile($template->filename);
$output->setFilename($options['filename']);
$output->setChdir(dirname($template->filename));
} else {
$options['filename'] = $template->filename;
}
}
// pass along the $options as a local variable to the template so that one can provide their
// own additional variables in it if they want to
$output->set('options', $options);
$profiler = $this->wire('profiler');
$profilerEvent = $profiler ? $profiler->start($page->path, $this, array('page' => $page)) : null;
$data = $output->render();
if($profilerEvent) $profiler->stop($profilerEvent);
if(!strlen($data) && $page->template->name === 'admin' && !is_readable($options['filename'])) {
throw new WireException('Missing or non-readable template file: ' . basename($options['filename']));
}
}
if($this->wire('config')->useMarkupRegions) {
$contentType = $template->contentType;
if(empty($contentType) || stripos($contentType, 'html') !== false) {
$this->populateMarkupRegions($data);
}
}
if($data && $cacheAllowed && $cacheFile) {
$data = $this->saveCacheFileReady($page, $data);
$cacheFile->save($data);
}
$event->return = $data;
/var/www/html/store/wire/core/Wire.php
/**
* Call a method in this object, for use by WireHooks
*
* #pw-internal
*
* @param string $method
* @param array $arguments
* @return mixed
*
*/
public function _callMethod($method, $arguments) {
$qty = $arguments ? count($arguments) : 0;
$result = null;
switch($qty) {
case 0:
$result = $this->$method();
break;
case 1:
$result = $this->$method($arguments[0]);
break;
case 2:
$result = $this->$method($arguments[0], $arguments[1]);
break;
case 3:
$result = $this->$method($arguments[0], $arguments[1], $arguments[2]);
break;
default:
$result = call_user_func_array(array($this, $method), $arguments);
}
return $result;
}
/**
* Call a hook method (optimization when it's known for certain the method exists)
*
* #pw-internal
*
* @param string $method Method name, without leading "___"
* @param array $arguments
/var/www/html/store/wire/core/WireHooks.php
'return' => null,
'numHooksRun' => 0,
'methodExists' => $methodExists,
'replace' => false,
);
if($type === 'method' || $type === 'property' || $type === 'either') {
if(!$methodExists && !$this->isHookedOrParents($object, $method, $type)) {
return $result; // exit quickly when we can
}
}
if($hooks === null) $hooks = $this->getHooks($object, $method);
foreach(array('before', 'after') as $when) {
if($type === 'method') {
if($when === 'after' && $result['replace'] !== true) {
if($methodExists) {
$result['return'] = $object->_callMethod($realMethod, $arguments);
} else {
$result['return'] = null;
}
}
} else if($type === 'after') {
if($when === 'before') continue;
} else if($type === 'before') {
if($when === 'after') break;
}
foreach($hooks as $priority => $hook) {
if(!$hook['options'][$when]) continue;
if($type === 'property' && $hook['options']['type'] === 'method') continue;
if($type === 'method' && $hook['options']['type'] === 'property') continue;
if(!empty($hook['options']['objMatch'])) {
/** @var Selectors $objMatch */
$objMatch = $hook['options']['objMatch'];
// object match comparison to determine at runtime whether to execute the hook
/var/www/html/store/wire/core/Wire.php
* See the Wire::runHooks() method for the full implementation of hook calls.
*
* @param string $method
* @param array $arguments
* @return mixed
* @throws WireException
*
*/
public function __call($method, $arguments) {
if(empty($arguments) && Fuel::isCommon($method)) {
// faster version of _callWireAPI for when conditions allow
if($this->_wire && !method_exists($this, "___$method")) {
// get a common API var with no arguments as method call more quickly
$val = $this->_wire->fuel($method);
if($val !== null) return $val;
}
}
$hooks = $this->_wireHooks();
if($hooks) {
$result = $hooks->runHooks($this, $method, $arguments);
if(!$result['methodExists'] && !$result['numHooksRun']) {
$result = $this->_callWireAPI($method, $arguments);
if(!$result) return $this->callUnknown($method, $arguments);
}
} else {
$result = $this->_callWireAPI($method, $arguments);
if(!$result) return $this->___callUnknown($method, $arguments);
}
return $result['return'];
}
/**
* Helper to __call() method that maps a call to an API variable when appropriate
*
* @param string $method
* @param array $arguments
* @return array|bool
* @internal
*
*/
/var/www/html/store/wire/core/WireHooks.php
if(!$toMethodCallable && strpos($toMethod, "\\") === false && __NAMESPACE__) {
$_toMethod = $toMethod;
$toMethod = "\\" . __NAMESPACE__ . "\\$toMethod";
$toMethodCallable = is_callable($toMethod);
if(!$toMethodCallable) {
$toMethod = "\\$_toMethod";
$toMethodCallable = is_callable($toMethod);
}
}
if($toMethodCallable) {
$returnValue = $toMethod($event);
} else {
// hook fail, not callable
$returnValue = null;
}
} else {
/** @var Wire $toObject */
if($hook['toPublic']) {
// public
$returnValue = $toObject->$toMethod($event);
} else {
// protected or private
$returnValue = $toObject->_callMethod($toMethod, array($event));
}
$toMethodCallable = true;
}
if($returnValue !== null) {
// hook method/func had an explicit 'return $value;' statement
// we can optionally use this rather than $event->return. Can be useful
// in cases where a return value doesn’t need to be passed around to
// more than one hook
if($useHookReturnValue) {
$event->return = $returnValue;
}
}
if($profilerEvent) $profiler->stop($profilerEvent);
if(!$toMethodCallable) continue;
/var/www/html/store/wire/core/Wire.php
* See the Wire::runHooks() method for the full implementation of hook calls.
*
* @param string $method
* @param array $arguments
* @return mixed
* @throws WireException
*
*/
public function __call($method, $arguments) {
if(empty($arguments) && Fuel::isCommon($method)) {
// faster version of _callWireAPI for when conditions allow
if($this->_wire && !method_exists($this, "___$method")) {
// get a common API var with no arguments as method call more quickly
$val = $this->_wire->fuel($method);
if($val !== null) return $val;
}
}
$hooks = $this->_wireHooks();
if($hooks) {
$result = $hooks->runHooks($this, $method, $arguments);
if(!$result['methodExists'] && !$result['numHooksRun']) {
$result = $this->_callWireAPI($method, $arguments);
if(!$result) return $this->callUnknown($method, $arguments);
}
} else {
$result = $this->_callWireAPI($method, $arguments);
if(!$result) return $this->___callUnknown($method, $arguments);
}
return $result['return'];
}
/**
* Helper to __call() method that maps a call to an API variable when appropriate
*
* @param string $method
* @param array $arguments
* @return array|bool
* @internal
*
*/
/var/www/html/store/wire/modules/Process/ProcessPageView.module
if($this->delayRedirects) {
$this->checkProtocol($page);
if($this->redirectURL) $this->redirect($this->redirectURL);
}
try {
if($this->requestFile) {
$this->responseType = self::responseTypeFile;
$this->wire()->setStatus(ProcessWire::statusDownload, array('downloadFile' => $this->requestFile));
$this->sendFile($page, $this->requestFile);
} else {
$contentType = $this->contentTypeHeader($page, true);
$this->wire()->setStatus(ProcessWire::statusRender, array('contentType' => $contentType));
if($config->ajax) $this->responseType = self::responseTypeAjax;
return $page->render();
}
} catch(Wire404Exception $e) {
// 404 exception
TemplateFile::clearAll();
return $this->renderNoPage(array(
'reason404' => '404 thrown during page render',
'exception404' => $e,
'page' => $page,
'ready' => true, // let it know ready state already executed
));
} catch(\Exception $e) {
// other exception (re-throw non 404 exceptions)
$this->responseType = self::responseTypeError;
$this->failed($e, "Thrown during page render", $page);
throw $e;
}
return '';
/var/www/html/store/wire/modules/Process/ProcessPageView.module
*
*/
public function ___execute($internal = true) {
if(!$internal) return $this->executeExternal();
$this->responseType = self::responseTypeNormal;
$config = $this->wire()->config;
$timerKey = $config->debug ? 'ProcessPageView.getPage()' : '';
if($config->usePoweredBy !== null) header('X-Powered-By:' . ($config->usePoweredBy ? ' ProcessWire CMS' : ''));
$this->wire()->pages->setOutputFormatting(true);
if($timerKey) Debug::timer($timerKey);
$page = $this->getPage();
if($timerKey) Debug::saveTimer($timerKey, ($page && $page->id ? $page->path : ''));
if(!$page || !$page->id) return $this->renderNoPage();
return $this->renderPage($page);
}
/**
* Render Page
*
* @param Page $page
* @return bool|mixed|string
* @throws WireException
* @since 3.0.173
*
*/
protected function renderPage(Page $page) {
$config = $this->wire()->config;
$page->setOutputFormatting(true);
$_page = $page;
$page = $this->checkAccess($page);
if(!$page || $_page->id == $config->http404PageID) {
/var/www/html/store/wire/core/Wire.php
/**
* Call a method in this object, for use by WireHooks
*
* #pw-internal
*
* @param string $method
* @param array $arguments
* @return mixed
*
*/
public function _callMethod($method, $arguments) {
$qty = $arguments ? count($arguments) : 0;
$result = null;
switch($qty) {
case 0:
$result = $this->$method();
break;
case 1:
$result = $this->$method($arguments[0]);
break;
case 2:
$result = $this->$method($arguments[0], $arguments[1]);
break;
case 3:
$result = $this->$method($arguments[0], $arguments[1], $arguments[2]);
break;
default:
$result = call_user_func_array(array($this, $method), $arguments);
}
return $result;
}
/**
* Call a hook method (optimization when it's known for certain the method exists)
*
* #pw-internal
*
* @param string $method Method name, without leading "___"
* @param array $arguments
/var/www/html/store/wire/core/WireHooks.php
'return' => null,
'numHooksRun' => 0,
'methodExists' => $methodExists,
'replace' => false,
);
if($type === 'method' || $type === 'property' || $type === 'either') {
if(!$methodExists && !$this->isHookedOrParents($object, $method, $type)) {
return $result; // exit quickly when we can
}
}
if($hooks === null) $hooks = $this->getHooks($object, $method);
foreach(array('before', 'after') as $when) {
if($type === 'method') {
if($when === 'after' && $result['replace'] !== true) {
if($methodExists) {
$result['return'] = $object->_callMethod($realMethod, $arguments);
} else {
$result['return'] = null;
}
}
} else if($type === 'after') {
if($when === 'before') continue;
} else if($type === 'before') {
if($when === 'after') break;
}
foreach($hooks as $priority => $hook) {
if(!$hook['options'][$when]) continue;
if($type === 'property' && $hook['options']['type'] === 'method') continue;
if($type === 'method' && $hook['options']['type'] === 'property') continue;
if(!empty($hook['options']['objMatch'])) {
/** @var Selectors $objMatch */
$objMatch = $hook['options']['objMatch'];
// object match comparison to determine at runtime whether to execute the hook
/var/www/html/store/wire/core/Wire.php
* See the Wire::runHooks() method for the full implementation of hook calls.
*
* @param string $method
* @param array $arguments
* @return mixed
* @throws WireException
*
*/
public function __call($method, $arguments) {
if(empty($arguments) && Fuel::isCommon($method)) {
// faster version of _callWireAPI for when conditions allow
if($this->_wire && !method_exists($this, "___$method")) {
// get a common API var with no arguments as method call more quickly
$val = $this->_wire->fuel($method);
if($val !== null) return $val;
}
}
$hooks = $this->_wireHooks();
if($hooks) {
$result = $hooks->runHooks($this, $method, $arguments);
if(!$result['methodExists'] && !$result['numHooksRun']) {
$result = $this->_callWireAPI($method, $arguments);
if(!$result) return $this->callUnknown($method, $arguments);
}
} else {
$result = $this->_callWireAPI($method, $arguments);
if(!$result) return $this->___callUnknown($method, $arguments);
}
return $result['return'];
}
/**
* Helper to __call() method that maps a call to an API variable when appropriate
*
* @param string $method
* @param array $arguments
* @return array|bool
* @internal
*
*/
/var/www/html/store/index.php
// If ProcessWire is not installed, go to the installer
if(is_file("./install.php") && strtolower($_SERVER['REQUEST_URI']) == strtolower($config->urls->root)) {
require("./install.php");
exit(0);
} else {
header("HTTP/1.1 404 Page Not Found");
echo "404 page not found (no site configuration or install.php available)";
exit(0);
}
}
$process = null;
$wire = null;
try {
// Bootstrap ProcessWire's core and make the API available with $wire
$wire = new ProcessWire($config);
$process = $wire->modules->get('ProcessPageView'); /** @var ProcessPageView $process */
$wire->wire('process', $process);
echo $process->execute($config->internal);
$config->internal ? $process->finished() : extract($wire->wire('all')->getArray());
} catch(\Exception $e) {
// Formulate error message and send to the error handler
if($process) $process->failed($e);
$wire ? $wire->trackException($e) : $config->trackException($e);
$errorMessage = "Exception: " . $e->getMessage() . " (in " . $e->getFile() . " line " . $e->getLine() . ")";
if($config->debug || ($wire && $wire->user && $wire->user->isSuperuser())) $errorMessage .= "\n\n" . $e->getTraceAsString();
trigger_error($errorMessage, E_USER_ERROR);
}
Environment & details:
| Key | Value |
| User ID | |
| Session ID | g2jci0h3p8cdres9687764183o |
| Path | /brands/ |
empty
empty
empty
empty
| Key | Value |
| Session | Array ( [dplusdata] => 1 [dpluso] => 1 ) |
| Key | Value |
| SSL_SERVER_A_KEY | rsaEncryption |
| SSL_CLIENT_VERIFY | NONE |
| SSL_SECURE_RENEG | false |
| SSL_SESSION_ID | 79784e5357d0c469b01dd2b8575bf8ba3a29b76155fef9178c91770fdc0d39cc |
| REDIRECT_REDIRECT_UNIQUE_ID | aRWO2NqBrAqiAK4gjn5lOAAAAQQ |
| SERVER_SIGNATURE | |
| SSL_TLS_SNI | fowlerpartsservice.com |
| UNIQUE_ID | aRWO2NqBrAqiAK4gjn5lOAAAAQQ |
| REDIRECT_SSL_SERVER_I_DN_CN | Go Daddy Secure Certificate Authority - G2 |
| SSL_VERSION_LIBRARY | OpenSSL/3.5.4 |
| REDIRECT_REDIRECT_SSL_TLS_SNI | fowlerpartsservice.com |
| HTTP_USER_AGENT | CCBot/2.0 (https://commoncrawl.org/faq/) |
| REDIRECT_SSL_SERVER_I_DN | CN=Go Daddy Secure Certificate Authority - G2,OU=http://certs.godaddy.com/repository/,O=GoDaddy.com\, Inc.,L=Scottsdale,ST=Arizona,C=US |
| REDIRECT_REDIRECT_STATUS | 200 |
| PHPRC | /etc/php.ini |
| SERVER_PORT | 443 |
| HTTP_HOST | fowlerpartsservice.com |
| SSL_SESSION_RESUMED | Initial |
| SSL_CIPHER_ALGKEYSIZE | 256 |
| REDIRECT_SSL_CIPHER | TLS_AES_256_GCM_SHA384 |
| REDIRECT_REDIRECT_proto | https |
| SSL_SERVER_I_DN | CN=Go Daddy Secure Certificate Authority - G2,OU=http://certs.godaddy.com/repository/,O=GoDaddy.com\, Inc.,L=Scottsdale,ST=Arizona,C=US |
| SSL_SERVER_I_DN_ST | Arizona |
| REDIRECT_HANDLER | php-fastcgi |
| DOCUMENT_ROOT | /var/www/html/store/ |
| REDIRECT_SSL_SERVER_V_END | Oct 20 18:55:21 2026 GMT |
| SCRIPT_FILENAME | /var/www/html/store/index.php |
| HTTPS | on |
| REDIRECT_SSL_CIPHER_USEKEYSIZE | 256 |
| REDIRECT_SSL_SECURE_RENEG | false |
| REQUEST_URI | /brands/ |
| SSL_SERVER_I_DN_OU | http://certs.godaddy.com/repository/ |
| SCRIPT_NAME | /index.php |
| REDIRECT_SSL_SESSION_ID | 79784e5357d0c469b01dd2b8575bf8ba3a29b76155fef9178c91770fdc0d39cc |
| REDIRECT_SSL_CIPHER_ALGKEYSIZE | 256 |
| REDIRECT_SSL_COMPRESS_METHOD | NULL |
| SSL_SERVER_S_DN | CN=fowlerpartsservice.com |
| SSL_VERSION_INTERFACE | mod_ssl/2.4.65 |
| SSL_SERVER_I_DN_C | US |
| SSL_SERVER_I_DN_L | Scottsdale |
| SSL_CIPHER_EXPORT | false |
| REDIRECT_SSL_PROTOCOL | TLSv1.3 |
| HTTP_CONNECTION | Keep-Alive |
| SSL_COMPRESS_METHOD | NULL |
| SSL_SERVER_I_DN_O | GoDaddy.com, Inc. |
| REDIRECT_SSL_SERVER_A_KEY | rsaEncryption |
| PHP_FCGI_CHILDREN | 4 |
| REMOTE_PORT | 33432 |
| PATH | /sbin:/usr/sbin:/bin:/usr/bin |
| CONTEXT_PREFIX | /cgi-bin/ |
| SSL_CIPHER | TLS_AES_256_GCM_SHA384 |
| PWD | /var/www/cgi-bin |
| SERVER_ADMIN | webmaster@localhost |
| REDIRECT_REDIRECT_HTTPS | on |
| SSL_SERVER_A_SIG | sha256WithRSAEncryption |
| REDIRECT_SSL_SERVER_I_DN_ST | Arizona |
| REDIRECT_SSL_SERVER_I_DN_C | US |
| REDIRECT_SSL_SERVER_S_DN_CN | fowlerpartsservice.com |
| REDIRECT_UNIQUE_ID | aRWO2NqBrAqiAK4gjn5lOAAAAQQ |
| REDIRECT_REDIRECT_HTTP_MOD_REWRITE | On |
| REQUEST_SCHEME | https |
| SSL_SERVER_M_SERIAL | 111F505185E9C39C |
| REDIRECT_HTTP_MOD_REWRITE | On |
| REDIRECT_SSL_CIPHER_EXPORT | false |
| REDIRECT_SSL_TLS_SNI | fowlerpartsservice.com |
| SSL_PROTOCOL | TLSv1.3 |
| REDIRECT_STATUS | 200 |
| REDIRECT_SSL_SERVER_M_SERIAL | 111F505185E9C39C |
| REDIRECT_SSL_SERVER_M_VERSION | 3 |
| REDIRECT_HTTPS | on |
| REDIRECT_QUERY_STRING | it=brands/ |
| HTTP_IF_MODIFIED_SINCE | Fri, 15 Aug 2025 08:44:20 GMT |
| HTTP_ACCEPT_LANGUAGE | en-US,en;q=0.5 |
| SSL_SERVER_S_DN_CN | fowlerpartsservice.com |
| REDIRECT_SSL_VERSION_INTERFACE | mod_ssl/2.4.65 |
| HTTP_ACCEPT | text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 |
| REMOTE_ADDR | 18.97.14.82 |
| SHLVL | 0 |
| SERVER_NAME | fowlerpartsservice.com |
| SSL_SERVER_M_VERSION | 3 |
| REDIRECT_SSL_SERVER_I_DN_L | Scottsdale |
| REDIRECT_SSL_SERVER_I_DN_O | GoDaddy.com, Inc. |
| REDIRECT_SSL_SESSION_RESUMED | Initial |
| REDIRECT_SSL_SERVER_SAN_DNS_1 | www.fowlerpartsservice.com |
| REDIRECT_SSL_SERVER_A_SIG | sha256WithRSAEncryption |
| REDIRECT_SSL_SERVER_V_START | Sep 18 18:55:21 2025 GMT |
| REDIRECT_SSL_SERVER_SAN_DNS_0 | fowlerpartsservice.com |
| SSL_SERVER_SAN_DNS_0 | fowlerpartsservice.com |
| SERVER_SOFTWARE | Apache/2.4.65 (Unix) OpenSSL/3.5.4 |
| SSL_SERVER_SAN_DNS_1 | www.fowlerpartsservice.com |
| QUERY_STRING | it=brands/ |
| SERVER_ADDR | 10.17.31.13 |
| SSL_SERVER_V_END | Oct 20 18:55:21 2026 GMT |
| REDIRECT_SSL_CLIENT_VERIFY | NONE |
| GATEWAY_INTERFACE | CGI/1.1 |
| REDIRECT_SSL_SERVER_S_DN | CN=fowlerpartsservice.com |
| REDIRECT_SSL_VERSION_LIBRARY | OpenSSL/3.5.4 |
| SERVER_PROTOCOL | HTTP/1.1 |
| HTTP_ACCEPT_ENCODING | br,gzip |
| REDIRECT_URL | /index.php |
| SSL_SERVER_I_DN_CN | Go Daddy Secure Certificate Authority - G2 |
| REDIRECT_proto | https |
| REQUEST_METHOD | GET |
| PHP_FCGI_MAX_REQUESTS | 1000 |
| CONTEXT_DOCUMENT_ROOT | /var/www/cgi-bin/ |
| SSL_SERVER_V_START | Sep 18 18:55:21 2025 GMT |
| SSL_CIPHER_USEKEYSIZE | 256 |
| REDIRECT_SSL_SERVER_I_DN_OU | http://certs.godaddy.com/repository/ |
| ORIG_SCRIPT_FILENAME | /var/www/cgi-bin/php.fastcgi |
| ORIG_PATH_INFO | /index.php |
| ORIG_PATH_TRANSLATED | /var/www/html/store/index.php |
| ORIG_SCRIPT_NAME | /cgi-bin/php.fastcgi |
| PHP_SELF | /index.php |
| REQUEST_TIME_FLOAT | 1763020504.5518 |
| REQUEST_TIME | 1763020504 |
empty
0. Mvc\Whoops\Handlers\EmailPage
1. Mvc\Whoops\Handlers\Page