TypeError
Return value of technexus\Controllers\Blog::handle() must be an instance of Psr\Http\Message\ResponseInterface, null returned TypeError thrown with message "Return value of technexus\Controllers\Blog::handle() must be an instance of Psr\Http\Message\ResponseInterface, null returned" Stacktrace: #4 TypeError in /var/www/technexus/src/Controllers/Blog.php:60 #3 technexus\Controllers\Blog:handle in /var/www/technexus/src/Controllers/Main.php:47 #2 technexus\Controllers\Main:handle in /var/www/technexus/src/App.php:122 #1 technexus\App:handleRequest in /var/www/technexus/bootstrap/router.php:10 #0 require in /var/www/technexus/public/index.php:4
Stack frames (5)
4
TypeError
/src/Controllers/Blog.php60
3
technexus\Controllers\Blog handle
/src/Controllers/Main.php47
2
technexus\Controllers\Main handle
/src/App.php122
1
technexus\App handleRequest
/bootstrap/router.php10
0
require
/public/index.php4
/var/www/technexus/src/Controllers/Blog.php
                return (new Admin())->handle($request);
                
            case 'api':
                return (new API())->handle($request);
 
            case 'media':
                return (new Media())->handle($request);
                
            case 'logout':
                return $this->logout();
 
            case '.rss':
                    return (new RSS())->handle($request);
                    
            case '':
                return $this->home($request);
                break;
 
            case 'topics':
                return $this->topics();
 
            case ctype_digit($action):
                // year of posts
                if (strlen($action) == 4) {
                    $year = $action;
                }
                // month of posts
                if (ctype_digit($this->peekPath()) && strlen($this->peekPath()) == 2) {
                    $month = $this->shiftPath();
                }
                // single post
                if ($this->peekPath()) {
                    $permalink = $this->shiftPath();
                }
                
                if (!$permalink && !$month) {
                    return $this->year($year);
                }
                
                if (!$permalink) {
Arguments
  1. "Return value of technexus\Controllers\Blog::handle() must be an instance of Psr\Http\Message\ResponseInterface, null returned"
    
/var/www/technexus/src/Controllers/Main.php
     * @uses Blog::handleRequest()
     * @return void
     */
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        if (file_exists($_SERVER['DOCUMENT_ROOT'].'/site.LOCK')) {
            echo file_get_contents($_SERVER['DOCUMENT_ROOT'].'/down.html');
            exit;
        }
 
        /*
         * This is to make sure any page that loads
         * through Apache's ErrorDocument returns 200
         * instead of 404.
         */
        header('HTTP/1.0 200 OK');
        //header('X-Powered-By: PHP/' . phpversion() . ' Div Framework (http://emr.ge) Henry\'s Revision');
 
        $blog = new Blog();
        return $blog->handle($request);
    }
}
 
/var/www/technexus/src/App.php
                return true;
            }
        }
        return false;
    }
    
    /**
     * Gets difference between process start and now in microseconds.
     *
     * @return void
     */
    public function getLoadTime()
    {
        return (microtime(true)-DIVERGENCE_START);
    }
 
    public function handleRequest()
    {
        $main = new Main();
        $response = $main->handle(ServerRequest::fromGlobals());
        (new Emitter($response))->emit();
    }
}
 
/var/www/technexus/bootstrap/router.php
<?php
/**
 * This file is part of the Divergence package.
 *
 * (c) Henry Paradiz <henry.paradiz@gmail.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
$app->handleRequest();
 
/var/www/technexus/public/index.php
<?php
require(__DIR__.'/../bootstrap/autoload.php');
require(__DIR__.'/../bootstrap/app.php');
require(__DIR__.'/../bootstrap/router.php');
 
Arguments
  1. "/var/www/technexus/bootstrap/router.php"
    

Environment & details:

empty
empty
empty
empty
empty
Key Value
USER
"www-data"
HOME
"/var/www"
SCRIPT_NAME
"/index.php"
REQUEST_URI
"/topics/gtk+"
QUERY_STRING
""
REQUEST_METHOD
"GET"
SERVER_PROTOCOL
"HTTP/1.1"
GATEWAY_INTERFACE
"CGI/1.1"
REDIRECT_URL
"/topics/gtk+"
REMOTE_PORT
"44886"
SCRIPT_FILENAME
"/var/www/technexus/public/index.php"
SERVER_ADMIN
"webmaster@localhost"
CONTEXT_DOCUMENT_ROOT
"/var/www/technexus/public"
CONTEXT_PREFIX
""
REQUEST_SCHEME
"https"
DOCUMENT_ROOT
"/var/www/technexus/public"
REMOTE_ADDR
"3.238.147.211"
SERVER_PORT
"443"
SERVER_ADDR
"192.241.147.251"
SERVER_NAME
"technex.us"
SERVER_SOFTWARE
"Apache/2.4.29 (Ubuntu)"
SERVER_SIGNATURE
"<address>Apache/2.4.29 (Ubuntu) Server at technex.us Port 443</address>\n"
PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
HTTP_CONNECTION
"Keep-Alive"
HTTP_HOST
"technex.us"
HTTP_ACCEPT_ENCODING
"br,gzip"
HTTP_IF_MODIFIED_SINCE
"Sat, 19 Sep 2020 12:29:59 GMT"
HTTP_ACCEPT_LANGUAGE
"en-US,en;q=0.5"
HTTP_ACCEPT
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HTTP_USER_AGENT
"CCBot/2.0 (https://commoncrawl.org/faq/)"
proxy-nokeepalive
"1"
SSL_TLS_SNI
"technex.us"
HTTPS
"on"
REDIRECT_STATUS
"200"
REDIRECT_SSL_TLS_SNI
"technex.us"
REDIRECT_HTTPS
"on"
FCGI_ROLE
"RESPONDER"
PHP_SELF
"/index.php"
REQUEST_TIME_FLOAT
1607125831.8348
REQUEST_TIME
1607125831
empty
0. Whoops\Handler\PrettyPageHandler