Whoops \ Exception \ ErrorException (E_WARNING)
Attempt to read property "is_private" on bool Whoops\Exception\ErrorException thrown with message "Attempt to read property "is_private" on bool" Stacktrace: #4 Whoops\Exception\ErrorException in /var/www/traq/bugs/vendor/traq/controllers/tickets.php:210 #3 Whoops\Run:handleError in /var/www/traq/bugs/vendor/traq/controllers/tickets.php:210 #2 traq\controllers\Tickets:action_view in /var/www/traq/bugs/vendor/avalon/core/kernel.php:84 #1 call_user_func_array in /var/www/traq/bugs/vendor/avalon/core/kernel.php:84 #0 avalon\core\Kernel:run in /var/www/traq/bugs/index.php:37
Stack frames (5)
4
Whoops\Exception\ErrorException
/vendor/traq/controllers/tickets.php210
3
Whoops\Run handleError
/vendor/traq/controllers/tickets.php210
2
traq\controllers\Tickets action_view
/vendor/avalon/core/kernel.php84
1
call_user_func_array
/vendor/avalon/core/kernel.php84
0
avalon\core\Kernel run
/index.php37
/var/www/traq/bugs/vendor/traq/controllers/tickets.php
 
        $this->apiResponse([
            'page' => (int) ($pagination->total_pages > 0 ? $pagination->page : 1),
            'total_pages' => (int) $pagination->total_pages,
            'tickets' => $tickets,
        ]);
    }
 
    /**
     * Handles the view ticket page.
     *
     * @param integer $ticket_id
     */
    public function action_view($ticket_id)
    {
        // Fetch the ticket from the database and send it to the view.
        $ticket = Ticket::select()->where("ticket_id", $ticket_id)->where("project_id", $this->project->id)->exec()->fetch();
 
        // If the ticket is private, only allow admins, projects members and the creator to view the ticket.
        if ($ticket->is_private) {
            if (
                $this->user->id !== $ticket->user_id
                && !$this->user->group->is_admin
                && !$this->project->is_member($this->user)
            ) {
                return $this->show_no_permission();
            }
        }
 
        // Ticket history
        $ticket_history = $ticket->history;
 
        switch (settings('ticket_history_sorting')) {
            case 'oldest_first':
                $ticket_history->order_by('created_at', 'ASC');
                break;
 
            case 'newest_first':
                $ticket_history->order_by('created_at', 'DESC');
                break;
/var/www/traq/bugs/vendor/traq/controllers/tickets.php
 
        $this->apiResponse([
            'page' => (int) ($pagination->total_pages > 0 ? $pagination->page : 1),
            'total_pages' => (int) $pagination->total_pages,
            'tickets' => $tickets,
        ]);
    }
 
    /**
     * Handles the view ticket page.
     *
     * @param integer $ticket_id
     */
    public function action_view($ticket_id)
    {
        // Fetch the ticket from the database and send it to the view.
        $ticket = Ticket::select()->where("ticket_id", $ticket_id)->where("project_id", $this->project->id)->exec()->fetch();
 
        // If the ticket is private, only allow admins, projects members and the creator to view the ticket.
        if ($ticket->is_private) {
            if (
                $this->user->id !== $ticket->user_id
                && !$this->user->group->is_admin
                && !$this->project->is_member($this->user)
            ) {
                return $this->show_no_permission();
            }
        }
 
        // Ticket history
        $ticket_history = $ticket->history;
 
        switch (settings('ticket_history_sorting')) {
            case 'oldest_first':
                $ticket_history->order_by('created_at', 'ASC');
                break;
 
            case 'newest_first':
                $ticket_history->order_by('created_at', 'DESC');
                break;
/var/www/traq/bugs/vendor/avalon/core/kernel.php
    public static function run()
    {
        // Start the app
        static::$app = new Router::$controller;
 
        // Before filters
        $filters = array_merge(
            isset(static::$app->before['*']) ? static::$app->before['*'] : array(),
            isset(static::$app->before[Router::$method]) ? static::$app->before[Router::$method] : array()
        );
        foreach ($filters as $filter) {
            static::$app->{$filter}(Router::$method);
        }
        unset($filters, $filter);
 
        // Call the method
        $output = null;
        if (static::$app->render['action']) {
            if (Router::$legacyRoute) {
                $output = call_user_func_array(array(static::$app, 'action_' . Router::$method), Router::$vars);
            } else {
                $output = [static::$app, Router::$method](...Router::$params);
            }
        }
 
        // After filters
        $filters = array_merge(
            isset(static::$app->after['*']) ? static::$app->after['*'] : array(),
            isset(static::$app->after[Router::$method]) ? static::$app->after[Router::$method] : array()
        );
        foreach ($filters as $filter) {
            static::$app->{$filter}(Router::$method);
        }
        unset($filters, $filter);
 
        if ($output instanceof Response) {
            $output->send();
        } elseif (is_array($output)) {
            Body::clear();
            header('Content-Type: application/json; charset=utf-8');
/var/www/traq/bugs/vendor/avalon/core/kernel.php
    public static function run()
    {
        // Start the app
        static::$app = new Router::$controller;
 
        // Before filters
        $filters = array_merge(
            isset(static::$app->before['*']) ? static::$app->before['*'] : array(),
            isset(static::$app->before[Router::$method]) ? static::$app->before[Router::$method] : array()
        );
        foreach ($filters as $filter) {
            static::$app->{$filter}(Router::$method);
        }
        unset($filters, $filter);
 
        // Call the method
        $output = null;
        if (static::$app->render['action']) {
            if (Router::$legacyRoute) {
                $output = call_user_func_array(array(static::$app, 'action_' . Router::$method), Router::$vars);
            } else {
                $output = [static::$app, Router::$method](...Router::$params);
            }
        }
 
        // After filters
        $filters = array_merge(
            isset(static::$app->after['*']) ? static::$app->after['*'] : array(),
            isset(static::$app->after[Router::$method]) ? static::$app->after[Router::$method] : array()
        );
        foreach ($filters as $filter) {
            static::$app->{$filter}(Router::$method);
        }
        unset($filters, $filter);
 
        if ($output instanceof Response) {
            $output->send();
        } elseif (is_array($output)) {
            Body::clear();
            header('Content-Type: application/json; charset=utf-8');
/var/www/traq/bugs/index.php
 * along with Traq. If not, see <http://www.gnu.org/licenses/>.
 */
 
require __DIR__ . '/vendor/autoload.php';
 
if (class_exists('\Whoops\Run')) {
    $whoops = new \Whoops\Run;
    $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
    $whoops->register();
}
 
define('START_TIME', microtime(true));
define('START_MEM',  memory_get_usage());
 
require dirname(__FILE__) . '/vendor/bootstrap.php';
 
use avalon\core\Kernel as Avalon;
 
Avalon::init();
Avalon::run();
 

Environment & details:

empty
empty
empty
empty
empty
Key Value
PHP_INI_DIR /usr/local/etc/php
HOSTNAME 12c005f7ae98
SHLVL 1
HOME /home/www-data
PHP_LDFLAGS -Wl,-O1 -pie
PHP_CFLAGS -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
container podman
PHP_VERSION 8.2.5
GPG_KEYS 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
PHP_ASC_URL https://www.php.net/distributions/php-8.2.5.tar.xz.asc
PHP_CPPFLAGS -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
PHP_URL https://www.php.net/distributions/php-8.2.5.tar.xz
TERM xterm
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PHPIZE_DEPS autoconf dpkg-dev dpkg file g++ gcc libc-dev make pkgconf re2c
PWD /var/www/html
PHP_SHA256 800738c359b7f1e67e40c22713d2d90276bc85ba1c21b43d99edd43c254c5f76
USER www-data
HTTP_CF_IPCOUNTRY US
HTTP_CDN_LOOP cloudflare
HTTP_CF_CONNECTING_IP 44.200.230.43
HTTP_USER_AGENT claudebot
HTTP_ACCEPT */*
HTTP_CF_VISITOR {"scheme":"https"}
HTTP_X_FORWARDED_PROTO https
HTTP_CF_RAY 86bbf5226e4905a8-IAD
HTTP_X_FORWARDED_FOR 44.200.230.43
HTTP_ACCEPT_ENCODING gzip, br
HTTP_CONNECTION Keep-Alive
HTTP_HOST bugs.traq.io
REDIRECT_STATUS 200
SERVER_NAME bugs.traq.io
SERVER_PORT 80
SERVER_ADDR 10.89.0.84
REMOTE_PORT 30242
REMOTE_ADDR 172.70.43.94
SERVER_SOFTWARE nginx/1.25.1
GATEWAY_INTERFACE CGI/1.1
REQUEST_SCHEME http
SERVER_PROTOCOL HTTP/1.1
DOCUMENT_ROOT /var/www/traq/bugs
DOCUMENT_URI /index.php
REQUEST_URI /traq/tickets/33
SCRIPT_NAME /index.php
CONTENT_LENGTH
CONTENT_TYPE
REQUEST_METHOD GET
QUERY_STRING
SCRIPT_FILENAME /var/www/traq/bugs/index.php
FCGI_ROLE RESPONDER
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1711674388.9747
REQUEST_TIME 1711674388
empty
0. Whoops\Handler\PrettyPageHandler