Whoops \ Exception \ ErrorException (E_DEPRECATED)
DateTime::__construct(): Passing null to parameter #1 ($datetime) of type string is deprecated Whoops\Exception\ErrorException thrown with message "DateTime::__construct(): Passing null to parameter #1 ($datetime) of type string is deprecated" Stacktrace: #9 Whoops\Exception\ErrorException in /home/www/doc/21734/growclub.info/www/vendor/monolog/monolog/src/Monolog/Logger.php:318 #8 DateTime:__construct in /home/www/doc/21734/growclub.info/www/vendor/monolog/monolog/src/Monolog/Logger.php:318 #7 Monolog\Logger:addRecord in /home/www/doc/21734/growclub.info/www/vendor/monolog/monolog/src/Monolog/Logger.php:416 #6 Monolog\Logger:addCritical in /home/www/doc/21734/growclub.info/www/system/src/Grav/Common/Errors/Errors.php:69 #5 Grav\Common\Errors\Errors:Grav\Common\Errors\{closure} in /home/www/doc/21734/growclub.info/www/vendor/filp/whoops/src/Whoops/Handler/CallbackHandler.php:50 #4 Whoops\Handler\CallbackHandler:handle in /home/www/doc/21734/growclub.info/www/vendor/filp/whoops/src/Whoops/Run.php:272 #3 Whoops\Run:handleException in /home/www/doc/21734/growclub.info/www/vendor/filp/whoops/src/Whoops/Run.php:353 #2 Whoops\Run:handleError in /home/www/doc/21734/growclub.info/www/vendor/filp/whoops/src/Whoops/Run.php:378 #1 Whoops\Run:handleShutdown in /home/www/doc/21734/growclub.info/www/system/src/Grav/Common/Errors/SystemFacade.php:36 #0 Grav\Common\Errors\SystemFacade:handleShutdown in [internal]:0
Stack frames (10)
9
Whoops
\
Exception
\
ErrorException
/
vendor
/
monolog
/
monolog
/
src
/
Monolog
/
Logger.php
318
8
DateTime
__construct
/
vendor
/
monolog
/
monolog
/
src
/
Monolog
/
Logger.php
318
7
Monolog
\
Logger
addRecord
/
vendor
/
monolog
/
monolog
/
src
/
Monolog
/
Logger.php
416
6
Monolog
\
Logger
addCritical
/
system
/
src
/
Grav
/
Common
/
Errors
/
Errors.php
69
5
Grav
\
Common
\
Errors
\
Errors
Grav
\
Common
\
Errors
\
{closure}
/
vendor
/
filp
/
whoops
/
src
/
Whoops
/
Handler
/
CallbackHandler.php
50
4
Whoops
\
Handler
\
CallbackHandler
handle
/
vendor
/
filp
/
whoops
/
src
/
Whoops
/
Run.php
272
3
Whoops
\
Run
handleException
/
vendor
/
filp
/
whoops
/
src
/
Whoops
/
Run.php
353
2
Whoops
\
Run
handleError
/
vendor
/
filp
/
whoops
/
src
/
Whoops
/
Run.php
378
1
Whoops
\
Run
handleShutdown
/
system
/
src
/
Grav
/
Common
/
Errors
/
SystemFacade.php
36
0
Grav
\
Common
\
Errors
\
SystemFacade
handleShutdown
[internal]
0
/
home
/
www
/
doc
/
21734
/
growclub.info
/
www
/
vendor
/
monolog
/
monolog
/
src
/
Monolog
/
Logger.php
                $handlerKey = key($this->handlers);
                break;
            }
 
            next($this->handlers);
        }
 
        if (null === $handlerKey) {
            return false;
        }
 
        if (!static::$timezone) {
            static::$timezone = new \DateTimeZone(date_default_timezone_get() ?: 'UTC');
        }
 
        // php7.1+ always has microseconds enabled, so we do not need this hack
        if ($this->microsecondTimestamps && PHP_VERSION_ID < 70100) {
            $ts = \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), static::$timezone);
        } else {
            $ts = new \DateTime(null, static::$timezone);
        }
        $ts->setTimezone(static::$timezone);
 
        $record = array(
            'message' => (string) $message,
            'context' => $context,
            'level' => $level,
            'level_name' => $levelName,
            'channel' => $this->name,
            'datetime' => $ts,
            'extra' => array(),
        );
 
        foreach ($this->processors as $processor) {
            $record = call_user_func($processor, $record);
        }
 
        while ($handler = current($this->handlers)) {
            if (true === $handler->handle($record)) {
                break;
Arguments
  1. "DateTime::__construct(): Passing null to parameter #1 ($datetime) of type string is deprecated"
    
/
home
/
www
/
doc
/
21734
/
growclub.info
/
www
/
vendor
/
monolog
/
monolog
/
src
/
Monolog
/
Logger.php
                $handlerKey = key($this->handlers);
                break;
            }
 
            next($this->handlers);
        }
 
        if (null === $handlerKey) {
            return false;
        }
 
        if (!static::$timezone) {
            static::$timezone = new \DateTimeZone(date_default_timezone_get() ?: 'UTC');
        }
 
        // php7.1+ always has microseconds enabled, so we do not need this hack
        if ($this->microsecondTimestamps && PHP_VERSION_ID < 70100) {
            $ts = \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), static::$timezone);
        } else {
            $ts = new \DateTime(null, static::$timezone);
        }
        $ts->setTimezone(static::$timezone);
 
        $record = array(
            'message' => (string) $message,
            'context' => $context,
            'level' => $level,
            'level_name' => $levelName,
            'channel' => $this->name,
            'datetime' => $ts,
            'extra' => array(),
        );
 
        foreach ($this->processors as $processor) {
            $record = call_user_func($processor, $record);
        }
 
        while ($handler = current($this->handlers)) {
            if (true === $handler->handle($record)) {
                break;
/
home
/
www
/
doc
/
21734
/
growclub.info
/
www
/
vendor
/
monolog
/
monolog
/
src
/
Monolog
/
Logger.php
     *
     * @param  string  $message The log message
     * @param  array   $context The log context
     * @return Boolean Whether the record has been processed
     */
    public function addError($message, array $context = array())
    {
        return $this->addRecord(static::ERROR, $message, $context);
    }
 
    /**
     * Adds a log record at the CRITICAL level.
     *
     * @param  string  $message The log message
     * @param  array   $context The log context
     * @return Boolean Whether the record has been processed
     */
    public function addCritical($message, array $context = array())
    {
        return $this->addRecord(static::CRITICAL, $message, $context);
    }
 
    /**
     * Adds a log record at the ALERT level.
     *
     * @param  string  $message The log message
     * @param  array   $context The log context
     * @return Boolean Whether the record has been processed
     */
    public function addAlert($message, array $context = array())
    {
        return $this->addRecord(static::ALERT, $message, $context);
    }
 
    /**
     * Adds a log record at the EMERGENCY level.
     *
     * @param  string  $message The log message
     * @param  array   $context The log context
     * @return Boolean Whether the record has been processed
/
home
/
www
/
doc
/
21734
/
growclub.info
/
www
/
system
/
src
/
Grav
/
Common
/
Errors
/
Errors.php
        }
 
        if (method_exists('Whoops\Util\Misc', 'isAjaxRequest')) { //Whoops 2.0
            if (Whoops\Util\Misc::isAjaxRequest() || $jsonRequest) {
                $whoops->pushHandler(new Whoops\Handler\JsonResponseHandler);
            }
        } elseif (function_exists('Whoops\isAjaxRequest')) { //Whoops 2.0.0-alpha
            if (Whoops\isAjaxRequest() || $jsonRequest) {
                $whoops->pushHandler(new Whoops\Handler\JsonResponseHandler);
            }
        } else { //Whoops 1.x
            $json_page = new Whoops\Handler\JsonResponseHandler;
            $json_page->onlyForAjaxRequests(true);
        }
 
        if (isset($config['log']) && $config['log']) {
            $logger = $grav['log'];
            $whoops->pushHandler(function($exception, $inspector, $run) use ($logger) {
                try {
                    $logger->addCritical($exception->getMessage() . ' - Trace: ' . $exception->getTraceAsString());
                } catch (\Exception $e) {
                    echo $e;
                }
            }, 'log');
        }
 
        $whoops->register();
    }
}
 
/
home
/
www
/
doc
/
21734
/
growclub.info
/
www
/
vendor
/
filp
/
whoops
/
src
/
Whoops
/
Handler
/
CallbackHandler.php
                'Argument to ' . __METHOD__ . ' must be valid callable'
            );
        }
 
        $this->callable = $callable;
    }
 
    /**
     * @return int|null
     */
    public function handle()
    {
        $exception = $this->getException();
        $inspector = $this->getInspector();
        $run       = $this->getRun();
        $callable  = $this->callable;
 
        // invoke the callable directly, to get simpler stacktraces (in comparison to call_user_func).
        // this assumes that $callable is a properly typed php-callable, which we check in __construct().
        return $callable($exception, $inspector, $run);
    }
}
 
/
home
/
www
/
doc
/
21734
/
growclub.info
/
www
/
vendor
/
filp
/
whoops
/
src
/
Whoops
/
Run.php
 
        // Capture output produced while handling the exception,
        // we might want to send it straight away to the client,
        // or return it silently.
        $this->system->startOutputBuffering();
 
        // Just in case there are no handlers:
        $handlerResponse = null;
        $handlerContentType = null;
 
        foreach (array_reverse($this->handlerStack) as $handler) {
            $handler->setRun($this);
            $handler->setInspector($inspector);
            $handler->setException($exception);
 
            // The HandlerInterface does not require an Exception passed to handle()
            // and neither of our bundled handlers use it.
            // However, 3rd party handlers may have already relied on this parameter,
            // and removing it would be possibly breaking for users.
            $handlerResponse = $handler->handle($exception);
 
            // Collect the content type for possible sending in the headers.
            $handlerContentType = method_exists($handler, 'contentType') ? $handler->contentType() : null;
 
            if (in_array($handlerResponse, [Handler::LAST_HANDLER, Handler::QUIT])) {
                // The Handler has handled the exception in some way, and
                // wishes to quit execution (Handler::QUIT), or skip any
                // other handlers (Handler::LAST_HANDLER). If $this->allowQuit
                // is false, Handler::QUIT behaves like Handler::LAST_HANDLER
                break;
            }
        }
 
        $willQuit = $handlerResponse == Handler::QUIT && $this->allowQuit();
 
        $output = $this->system->cleanOutputBuffer();
 
        // If we're allowed to, send output generated by handlers directly
        // to the output, otherwise, and if the script doesn't quit, return
        // it so that it may be used by the caller
/
home
/
www
/
doc
/
21734
/
growclub.info
/
www
/
vendor
/
filp
/
whoops
/
src
/
Whoops
/
Run.php
    public function handleError($level, $message, $file = null, $line = null)
    {
        if ($level & $this->system->getErrorReportingLevel()) {
            foreach ($this->silencedPatterns as $entry) {
                $pathMatches = (bool) preg_match($entry["pattern"], $file);
                $levelMatches = $level & $entry["levels"];
                if ($pathMatches && $levelMatches) {
                    // Ignore the error, abort handling
                    // See https://github.com/filp/whoops/issues/418
                    return true;
                }
            }
 
            // XXX we pass $level for the "code" param only for BC reasons.
            // see https://github.com/filp/whoops/issues/267
            $exception = new ErrorException($message, /*code*/ $level, /*severity*/ $level, $file, $line);
            if ($this->canThrowExceptions) {
                throw $exception;
            } else {
                $this->handleException($exception);
            }
            // Do not propagate errors which were already handled by Whoops.
            return true;
        }
 
        // Propagate error to the next handler, allows error_get_last() to
        // work on silenced errors.
        return false;
    }
 
    /**
     * Special case to deal with Fatal errors and the like.
     */
    public function handleShutdown()
    {
        // If we reached this step, we are in shutdown handler.
        // An exception thrown in a shutdown handler will not be propagated
        // to the exception handler. Pass that information along.
        $this->canThrowExceptions = false;
 
/
home
/
www
/
doc
/
21734
/
growclub.info
/
www
/
vendor
/
filp
/
whoops
/
src
/
Whoops
/
Run.php
        // Propagate error to the next handler, allows error_get_last() to
        // work on silenced errors.
        return false;
    }
 
    /**
     * Special case to deal with Fatal errors and the like.
     */
    public function handleShutdown()
    {
        // If we reached this step, we are in shutdown handler.
        // An exception thrown in a shutdown handler will not be propagated
        // to the exception handler. Pass that information along.
        $this->canThrowExceptions = false;
 
        $error = $this->system->getLastError();
        if ($error && Misc::isLevelFatal($error['type'])) {
            // If there was a fatal error,
            // it was not handled in handleError yet.
            $this->handleError(
                $error['type'],
                $error['message'],
                $error['file'],
                $error['line']
            );
        }
    }
 
    /**
     * In certain scenarios, like in shutdown handler, we can not throw exceptions
     * @var bool
     */
    private $canThrowExceptions = true;
 
    /**
     * Echo something to the browser
     * @param  string $output
     * @return $this
     */
    private function writeToOutputNow($output)
/
home
/
www
/
doc
/
21734
/
growclub.info
/
www
/
system
/
src
/
Grav
/
Common
/
Errors
/
SystemFacade.php
     *
     * @return void
     */
    public function registerShutdownFunction(callable $function)
    {
        $this->whoopsShutdownHandler = $function;
        register_shutdown_function([$this, 'handleShutdown']);
    }
 
    /**
     * Special case to deal with Fatal errors and the like.
     */
    public function handleShutdown()
    {
        $error = $this->getLastError();
 
        // Ignore core warnings and errors.
        if ($error && !($error['type'] & (E_CORE_WARNING | E_CORE_ERROR))) {
            $handler = $this->whoopsShutdownHandler;
            $handler();
        }
    }
}
 
[internal]

Environment & details:

Key Value
4-Outdoor-amp-Low-Budget-Growing
""
s
"b79382d48cb281d3bb42a1a2fe3d6212"
empty
empty
empty
empty
Key Value
PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
REDIRECT_REDIRECT_AF_SEC
"<?php af()sec; ?>"
REDIRECT_REDIRECT_AF_ALLOWED_PHP_VERSIONS
"8.0 8.1 8.2 8.3"
REDIRECT_REDIRECT_STATUS
"200"
REDIRECT_AF_SEC
"<?php af()sec; ?>"
REDIRECT_AF_ALLOWED_PHP_VERSIONS
"8.0 8.1 8.2 8.3"
REDIRECT_HANDLER
"af_php73"
REDIRECT_STATUS
"200"
AF_SEC
"<?php af()sec; ?>"
AF_ALLOWED_PHP_VERSIONS
"8.0 8.1 8.2 8.3"
HTTP_ACCEPT
"*/*"
HTTP_USER_AGENT
"claudebot"
HTTP_HOST
"growclub.info"
SERVER_SIGNATURE
""
SERVER_SOFTWARE
"Apache"
SERVER_NAME
"growclub.info"
SERVER_ADDR
"212.53.214.43"
SERVER_PORT
"80"
REMOTE_ADDR
"3.81.221.121"
DOCUMENT_ROOT
"/home/www/doc/21734/growclub.info/www"
REQUEST_SCHEME
"http"
CONTEXT_PREFIX
"/af_php73"
CONTEXT_DOCUMENT_ROOT
"/usr/local/php-7.3/bin"
SERVER_ADMIN
"webmaster@growclub.info"
SCRIPT_FILENAME
"/home/www/doc/21734/growclub.info/www/index.php"
REMOTE_PORT
"41278"
REDIRECT_URL
"/index.php"
REDIRECT_QUERY_STRING
"4-Outdoor-amp-Low-Budget-Growing&s=b79382d48cb281d3bb42a1a2fe3d6212"
GATEWAY_INTERFACE
"CGI/1.1"
SERVER_PROTOCOL
"HTTP/1.1"
REQUEST_METHOD
"GET"
QUERY_STRING
"4-Outdoor-amp-Low-Budget-Growing&s=b79382d48cb281d3bb42a1a2fe3d6212"
REQUEST_URI
"/forumdisplay.php?4-Outdoor-amp-Low-Budget-Growing&s=b79382d48cb281d3bb42a1a2fe3d6212"
SCRIPT_NAME
"/index.php"
ORIG_SCRIPT_FILENAME
"/usr/local/php-7.3/bin/php-cgi"
ORIG_PATH_INFO
"/index.php"
ORIG_PATH_TRANSLATED
"/home/www/doc/21734/growclub.info/www/index.php"
ORIG_SCRIPT_NAME
"/af_php73/php-cgi"
PHP_SELF
"/index.php"
REQUEST_TIME_FLOAT
1711631290.9364
REQUEST_TIME
1711631290
empty
0. Whoops\Handler\PrettyPageHandler
1. Whoops\Handler\CallbackHandler