Exception
500: Unknown Error. Rm2{s4"code"1s4"data"m10{s4"name"s2"选题"s7"site_id"1s6"scheme"s5"topic"s13"module_domain"s33"https://gstv-task.sdy.qiludev.com"s11"site_domain"s25"gstv-home.sdy.qiludev.com"s23"module_is_show_shortcut"1s20"module_is_show_theme"s5"light"s16"module_menu_type"s4"card"s5"color"m5{s31"module_sidebar_background_color"s7"#EEF3FF"s31"module_sidebar_background_image"s4"null"s27"module_sidebar_active_color"s7"#1761FF"s25"module_sidebar_font_color"s4"#fff"s32"module_sidebar_common_font_color"s7"#505050"}s4"logo"m3{s19"module_is_show_logo"1s21"module_small_logo_url"s98"https://img.zhzt.gstv.com.cn:10443/system_config/1/2024/11/01/c78aa9df80932a3f2de127d2b3123381.png"s19"module_big_logo_url"s98"https://img.zhzt.gstv.com.cn:10443/system_config/1/2024/11/01/d2991da5883ecb0132783b39f8b1d5b6.png"}}}z Exception thrown with message "500: Unknown Error. Rm2{s4"code"1s4"data"m10{s4"name"s2"选题"s7"site_id"1s6"scheme"s5"topic"s13"module_domain"s33"https://gstv-task.sdy.qiludev.com"s11"site_domain"s25"gstv-home.sdy.qiludev.com"s23"module_is_show_shortcut"1s20"module_is_show_theme"s5"light"s16"module_menu_type"s4"card"s5"color"m5{s31"module_sidebar_background_color"s7"#EEF3FF"s31"module_sidebar_background_image"s4"null"s27"module_sidebar_active_color"s7"#1761FF"s25"module_sidebar_font_color"s4"#fff"s32"module_sidebar_common_font_color"s7"#505050"}s4"logo"m3{s19"module_is_show_logo"1s21"module_small_logo_url"s98"https://img.zhzt.gstv.com.cn:10443/system_config/1/2024/11/01/c78aa9df80932a3f2de127d2b3123381.png"s19"module_big_logo_url"s98"https://img.zhzt.gstv.com.cn:10443/system_config/1/2024/11/01/d2991da5883ecb0132783b39f8b1d5b6.png"}}}z" Stacktrace: #24 Exception in /home/www-data/html/vendor/hprose/hprose/src/Hprose/Http/Client.php:264 #23 Hprose\Http\Client:getContents in /home/www-data/html/vendor/hprose/hprose/src/Hprose/Http/Client.php:277 #22 Hprose\Http\Client:syncSendAndReceive in /home/www-data/html/vendor/hprose/hprose/src/Hprose/Http/Client.php:294 #21 Hprose\Http\Client:sendAndReceive in /home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php:539 #20 Hprose\Client:afterFilterHandler in /home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php:109 #19 Hprose\Client:Hprose\{closure} in /home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php:504 #18 Hprose\Client:syncBeforeFilterHandler in /home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php:518 #17 Hprose\Client:beforeFilterHandler in /home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php:106 #16 Hprose\Client:Hprose\{closure} in /home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php:476 #15 Hprose\Client:syncInvokeHandler in /home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php:489 #14 Hprose\Client:invokeHandler in /home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php:103 #13 Hprose\Client:Hprose\{closure} in /home/www-data/html/vendor/skittle/tools/src/Hprose/Client.php:82 #12 Skittle\Hprose\Client:Skittle\Hprose\{closure} in /home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php:454 #11 call_user_func_array in /home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php:454 #10 Hprose\Client:Hprose\{closure} in /home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php:608 #9 Hprose\Client:invoke in /home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php:438 #8 Hprose\Client:__call in /home/www-data/html/vendor/skittle/tools/src/Hprose/Client.php:153 #7 Skittle\Hprose\Client:useFunction in /home/www-data/html/vendor/skittle/tools/src/Common/Site.php:94 #6 Skittle\Common\Site:getSite in /home/www-data/html/app/controller/v1/Common.php:254 #5 app\controller\v1\Common:home in /home/www-data/html/vendor/skipify/vitex/vitex/core/Router.php:639 #4 vitex\core\Router:vitex\core\{closure} in /home/www-data/html/vendor/skipify/vitex/vitex/core/Route.php:319 #3 call_user_func in /home/www-data/html/vendor/skipify/vitex/vitex/core/Route.php:319 #2 vitex\core\Route:next in /home/www-data/html/vendor/skipify/vitex/vitex/Vitex.php:875 #1 vitex\Vitex:routeDispatch in /home/www-data/html/vendor/skipify/vitex/vitex/Vitex.php:892 #0 vitex\Vitex:run in /home/www-data/html/webroot/index.php:57
Stack frames (25)
24
Exception
/vendor/hprose/hprose/src/Hprose/Http/Client.php264
23
Hprose\Http\Client getContents
/vendor/hprose/hprose/src/Hprose/Http/Client.php277
22
Hprose\Http\Client syncSendAndReceive
/vendor/hprose/hprose/src/Hprose/Http/Client.php294
21
Hprose\Http\Client sendAndReceive
/vendor/hprose/hprose/src/Hprose/Client.php539
20
Hprose\Client afterFilterHandler
/vendor/hprose/hprose/src/Hprose/Client.php109
19
Hprose\Client Hprose\{closure}
/vendor/hprose/hprose/src/Hprose/Client.php504
18
Hprose\Client syncBeforeFilterHandler
/vendor/hprose/hprose/src/Hprose/Client.php518
17
Hprose\Client beforeFilterHandler
/vendor/hprose/hprose/src/Hprose/Client.php106
16
Hprose\Client Hprose\{closure}
/vendor/hprose/hprose/src/Hprose/Client.php476
15
Hprose\Client syncInvokeHandler
/vendor/hprose/hprose/src/Hprose/Client.php489
14
Hprose\Client invokeHandler
/vendor/hprose/hprose/src/Hprose/Client.php103
13
Hprose\Client Hprose\{closure}
/vendor/skittle/tools/src/Hprose/Client.php82
12
Skittle\Hprose\Client Skittle\Hprose\{closure}
/vendor/hprose/hprose/src/Hprose/Client.php454
11
call_user_func_array
/vendor/hprose/hprose/src/Hprose/Client.php454
10
Hprose\Client Hprose\{closure}
/vendor/hprose/hprose/src/Hprose/Client.php608
9
Hprose\Client invoke
/vendor/hprose/hprose/src/Hprose/Client.php438
8
Hprose\Client __call
/vendor/skittle/tools/src/Hprose/Client.php153
7
Skittle\Hprose\Client useFunction
/vendor/skittle/tools/src/Common/Site.php94
6
Skittle\Common\Site getSite
/app/controller/v1/Common.php254
5
app\controller\v1\Common home
/vendor/skipify/vitex/vitex/core/Router.php639
4
vitex\core\Router vitex\core\{closure}
/vendor/skipify/vitex/vitex/core/Route.php319
3
call_user_func
/vendor/skipify/vitex/vitex/core/Route.php319
2
vitex\core\Route next
/vendor/skipify/vitex/vitex/Vitex.php875
1
vitex\Vitex routeDispatch
/vendor/skipify/vitex/vitex/Vitex.php892
0
vitex\Vitex run
/webroot/index.php57
/home/www-data/html/vendor/hprose/hprose/src/Hprose/Http/Client.php
        $header = array();
        foreach ($http_response_header as $headerline) {
            $pair = explode(':', $headerline, 2);
            $name = trim($pair[0]);
            $value = (count($pair) > 1) ? trim($pair[1]) : '';
            if (array_key_exists($name, $header)) {
                if (is_array($header[$name])) {
                    $header[$name][] = $value;
                }
                else {
                    $header[$name] = array($header[$name], $value);
                }
            }
            else {
                $header[$name] = $value;
            }
        }
        $context->httpHeader = $header;
        if ($response_code != '200') {
            throw new Exception($response_code . ": " . $response_status . "\r\n\r\n" . $response);
        }
        $this->setCookie($http_response_header);
        return $response;
    }
    private function syncSendAndReceive($request, stdClass $context) {
        $curl = curl_init();
        $this->initCurl($curl, $request, $context);
        $data = curl_exec($curl);
        $errno = curl_errno($curl);
        if ($errno) {
            throw new Exception($errno . ": " . curl_error($curl));
        }
        $data = $this->getContents($data, $context);
        curl_close($curl);
        return $data;
    }
    private function asyncSendAndReceive($request, stdClass $context) {
        $result = new Future();
        $curl = curl_init();
        $this->initCurl($curl, $request, $context);
/home/www-data/html/vendor/hprose/hprose/src/Hprose/Http/Client.php
            else {
                $header[$name] = $value;
            }
        }
        $context->httpHeader = $header;
        if ($response_code != '200') {
            throw new Exception($response_code . ": " . $response_status . "\r\n\r\n" . $response);
        }
        $this->setCookie($http_response_header);
        return $response;
    }
    private function syncSendAndReceive($request, stdClass $context) {
        $curl = curl_init();
        $this->initCurl($curl, $request, $context);
        $data = curl_exec($curl);
        $errno = curl_errno($curl);
        if ($errno) {
            throw new Exception($errno . ": " . curl_error($curl));
        }
        $data = $this->getContents($data, $context);
        curl_close($curl);
        return $data;
    }
    private function asyncSendAndReceive($request, stdClass $context) {
        $result = new Future();
        $curl = curl_init();
        $this->initCurl($curl, $request, $context);
        $this->curls[] = $curl;
        $this->results[] = $result;
        $this->contexts[] = $context;
        return $result;
    }
    protected function sendAndReceive($request, stdClass $context) {
        if ($this->async) {
            return $this->asyncSendAndReceive($request, $context);
        }
        return $this->syncSendAndReceive($request, $context);
    }
    private function curlMultiExec($multicurl, &$active) {
        if ($this->curlVersionLittleThan720) {
/home/www-data/html/vendor/hprose/hprose/src/Hprose/Http/Client.php
            throw new Exception($errno . ": " . curl_error($curl));
        }
        $data = $this->getContents($data, $context);
        curl_close($curl);
        return $data;
    }
    private function asyncSendAndReceive($request, stdClass $context) {
        $result = new Future();
        $curl = curl_init();
        $this->initCurl($curl, $request, $context);
        $this->curls[] = $curl;
        $this->results[] = $result;
        $this->contexts[] = $context;
        return $result;
    }
    protected function sendAndReceive($request, stdClass $context) {
        if ($this->async) {
            return $this->asyncSendAndReceive($request, $context);
        }
        return $this->syncSendAndReceive($request, $context);
    }
    private function curlMultiExec($multicurl, &$active) {
        if ($this->curlVersionLittleThan720) {
            do {
                $status = curl_multi_exec($multicurl, $active);
            } while ($status === CURLM_CALL_MULTI_PERFORM);
            return $status;
        }
        return curl_multi_exec($multicurl, $active);
    }
    public function loop() {
        $self = $this;
        $multicurl = curl_multi_init();
        while (($count = count($this->curls)) > 0) {
            $curls = $this->curls;
            $this->curls = array();
            $results = $this->results;
            $this->results = array();
            $contexts = $this->contexts;
            $this->contexts = array();
/home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php
 
    /*
        This method is a protected method.
        But PHP 5.3 can't call protected method in closure,
        so we comment the protected keyword.
    */
    /*protected*/ function afterFilterHandler($request, stdClass $context) {
        if ($this->async) {
            $self = $this;
            return $this->sendAndReceive($request, $context)->catchError(function($e) use ($self, $request, $context) {
                $response = $self->retry($request, $context);
                if ($response !== null) {
                    return $response;
                }
                throw $e;
            });
        }
        $error = null;
        try {
            $response = $this->sendAndReceive($request, $context);
        }
        catch (Exception $e) { $error = $e; }
        catch (Throwable $e) { $error = $e; }
        if ($error !== null) {
            $response = $this->retry($request, $context);
            if ($response !== null) {
                return $response;
            }
            throw $error;
        }
        return $response;
    }
 
    public function invoke($name, array &$args = array(), $callback = null, InvokeSettings $settings = null) {
        if ($callback instanceof InvokeSettings) {
            $settings = $callback;
            $callback = null;
        }
        if ($settings === null) $settings = new InvokeSettings();
        $context = $this->getContext($settings);
/home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php
 
    public function __construct($uriList = null, $async = true) {
        parent::__construct();
        if ($uriList != null) {
            $this->setUriList($uriList);
            if (is_bool($uriList)) {
                $async = $uriList;
            }
        }
        $this->async = $async;
        if (!$this->async) {
            $self = $this;
            $this->defaultInvokeHandler = function(/*string*/ $name, array &$args, stdClass $context) use ($self) {
                return $self->invokeHandler($name, $args, $context);
            };
            $this->defaultBeforeFilterHandler = function(/*string*/ $request, stdClass $context) use ($self) {
                return $self->beforeFilterHandler($request, $context);
            };
            $this->defaultAfterFilterHandler = function(/*string*/ $request, stdClass $context) use ($self) {
                return $self->afterFilterHandler($request, $context);
            };
            $this->invokeHandler = $this->defaultInvokeHandler;
            $this->beforeFilterHandler = $this->defaultBeforeFilterHandler;
            $this->afterFilterHandler = $this->defaultAfterFilterHandler;
        }
    }
 
    public function __destruct() {
        $this->close();
    }
 
    public function close() {}
 
    public final function getTimeout() {
        return $this->timeout;
    }
 
    public final function setTimeout($timeout) {
        if ($timeout < 1) throw new Exception("timeout must be great than 0");
        $this->timeout = $timeout;
/home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php
    /*protected*/ function invokeHandler($name, array &$args, stdClass $context) {
        if ($this->async) {
            return $this->asyncInvokeHandler($name, $args, $context);
        }
        return $this->syncInvokeHandler($name, $args, $context);
    }
 
    private function asyncBeforeFilterHandler($request, stdClass $context) {
        $afterFilterHandler = $this->afterFilterHandler;
        $self = $this;
        return $afterFilterHandler($this->outputFilter($request, $context), $context)
                ->then(function($response) use ($self, $context) {
            if ($context->oneway) return null;
            return $self->inputFilter($response, $context);
        });
    }
 
    private function syncBeforeFilterHandler($request, stdClass $context) {
        $afterFilterHandler = $this->afterFilterHandler;
        $response = $afterFilterHandler($this->outputFilter($request, $context), $context);
        if ($context->oneway) return null;
        return $this->inputFilter($response, $context);
    }
 
    /*
        This method is a protected method.
        But PHP 5.3 can't call protected method in closure,
        so we comment the protected keyword.
    */
    /*protected*/ function beforeFilterHandler($request, stdClass $context) {
        if ($this->async) {
            return $this->asyncBeforeFilterHandler($request, $context);
        }
        return $this->syncBeforeFilterHandler($request, $context);
    }
 
    /*
        This method is a protected method.
        But PHP 5.3 can't call protected method in closure,
        so we comment the protected keyword.
/home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php
        });
    }
 
    private function syncBeforeFilterHandler($request, stdClass $context) {
        $afterFilterHandler = $this->afterFilterHandler;
        $response = $afterFilterHandler($this->outputFilter($request, $context), $context);
        if ($context->oneway) return null;
        return $this->inputFilter($response, $context);
    }
 
    /*
        This method is a protected method.
        But PHP 5.3 can't call protected method in closure,
        so we comment the protected keyword.
    */
    /*protected*/ function beforeFilterHandler($request, stdClass $context) {
        if ($this->async) {
            return $this->asyncBeforeFilterHandler($request, $context);
        }
        return $this->syncBeforeFilterHandler($request, $context);
    }
 
    /*
        This method is a protected method.
        But PHP 5.3 can't call protected method in closure,
        so we comment the protected keyword.
    */
    /*protected*/ function afterFilterHandler($request, stdClass $context) {
        if ($this->async) {
            $self = $this;
            return $this->sendAndReceive($request, $context)->catchError(function($e) use ($self, $request, $context) {
                $response = $self->retry($request, $context);
                if ($response !== null) {
                    return $response;
                }
                throw $e;
            });
        }
        $error = null;
        try {
/home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php
        }
        return new $clientFactory($uriList, $async);
    }
 
    public function __construct($uriList = null, $async = true) {
        parent::__construct();
        if ($uriList != null) {
            $this->setUriList($uriList);
            if (is_bool($uriList)) {
                $async = $uriList;
            }
        }
        $this->async = $async;
        if (!$this->async) {
            $self = $this;
            $this->defaultInvokeHandler = function(/*string*/ $name, array &$args, stdClass $context) use ($self) {
                return $self->invokeHandler($name, $args, $context);
            };
            $this->defaultBeforeFilterHandler = function(/*string*/ $request, stdClass $context) use ($self) {
                return $self->beforeFilterHandler($request, $context);
            };
            $this->defaultAfterFilterHandler = function(/*string*/ $request, stdClass $context) use ($self) {
                return $self->afterFilterHandler($request, $context);
            };
            $this->invokeHandler = $this->defaultInvokeHandler;
            $this->beforeFilterHandler = $this->defaultBeforeFilterHandler;
            $this->afterFilterHandler = $this->defaultAfterFilterHandler;
        }
    }
 
    public function __destruct() {
        $this->close();
    }
 
    public function close() {}
 
    public final function getTimeout() {
        return $this->timeout;
    }
 
/home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php
    protected function getNextFilterHandler(Closure $next, /*callable*/ $handler) {
        if ($this->async) return parent::getNextFilterHandler($next, $handler);
        return function($request, stdClass $context) use ($next, $handler) {
            return call_user_func($handler, $request, $context, $next);
        };
    }
 
    private function asyncInvokeHandler($name, array &$args, stdClass $context) {
        $request = $this->encode($name, $args, $context);
        $self = $this;
        $beforeFilterHandler = $this->beforeFilterHandler;
        return $beforeFilterHandler($request, $context)->then(function($response) use ($self, &$args, $context) {
            return $self->decode($response, $args, $context);
        });
    }
 
    private function syncInvokeHandler($name, array &$args, stdClass $context) {
        $request = $this->encode($name, $args, $context);
        $beforeFilterHandler = $this->beforeFilterHandler;
        $response = $beforeFilterHandler($request, $context);
        return $this->decode($response, $args, $context);
    }
 
    /*
        This method is a protected method.
        But PHP 5.3 can't call protected method in closure,
        so we comment the protected keyword.
    */
    /*protected*/ function invokeHandler($name, array &$args, stdClass $context) {
        if ($this->async) {
            return $this->asyncInvokeHandler($name, $args, $context);
        }
        return $this->syncInvokeHandler($name, $args, $context);
    }
 
    private function asyncBeforeFilterHandler($request, stdClass $context) {
        $afterFilterHandler = $this->afterFilterHandler;
        $self = $this;
        return $afterFilterHandler($this->outputFilter($request, $context), $context)
                ->then(function($response) use ($self, $context) {
/home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php
        });
    }
 
    private function syncInvokeHandler($name, array &$args, stdClass $context) {
        $request = $this->encode($name, $args, $context);
        $beforeFilterHandler = $this->beforeFilterHandler;
        $response = $beforeFilterHandler($request, $context);
        return $this->decode($response, $args, $context);
    }
 
    /*
        This method is a protected method.
        But PHP 5.3 can't call protected method in closure,
        so we comment the protected keyword.
    */
    /*protected*/ function invokeHandler($name, array &$args, stdClass $context) {
        if ($this->async) {
            return $this->asyncInvokeHandler($name, $args, $context);
        }
        return $this->syncInvokeHandler($name, $args, $context);
    }
 
    private function asyncBeforeFilterHandler($request, stdClass $context) {
        $afterFilterHandler = $this->afterFilterHandler;
        $self = $this;
        return $afterFilterHandler($this->outputFilter($request, $context), $context)
                ->then(function($response) use ($self, $context) {
            if ($context->oneway) return null;
            return $self->inputFilter($response, $context);
        });
    }
 
    private function syncBeforeFilterHandler($request, stdClass $context) {
        $afterFilterHandler = $this->afterFilterHandler;
        $response = $afterFilterHandler($this->outputFilter($request, $context), $context);
        if ($context->oneway) return null;
        return $this->inputFilter($response, $context);
    }
 
    /*
/home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php
        $clientFactory = self::$clientFactories[$scheme];
        if (empty($clientFactory)) {
            throw new Exception("This client doesn't support $scheme scheme.");
        }
        return new $clientFactory($uriList, $async);
    }
 
    public function __construct($uriList = null, $async = true) {
        parent::__construct();
        if ($uriList != null) {
            $this->setUriList($uriList);
            if (is_bool($uriList)) {
                $async = $uriList;
            }
        }
        $this->async = $async;
        if (!$this->async) {
            $self = $this;
            $this->defaultInvokeHandler = function(/*string*/ $name, array &$args, stdClass $context) use ($self) {
                return $self->invokeHandler($name, $args, $context);
            };
            $this->defaultBeforeFilterHandler = function(/*string*/ $request, stdClass $context) use ($self) {
                return $self->beforeFilterHandler($request, $context);
            };
            $this->defaultAfterFilterHandler = function(/*string*/ $request, stdClass $context) use ($self) {
                return $self->afterFilterHandler($request, $context);
            };
            $this->invokeHandler = $this->defaultInvokeHandler;
            $this->beforeFilterHandler = $this->defaultBeforeFilterHandler;
            $this->afterFilterHandler = $this->defaultAfterFilterHandler;
        }
    }
 
    public function __destruct() {
        $this->close();
    }
 
    public function close() {}
 
    public final function getTimeout() {
/home/www-data/html/vendor/skittle/tools/src/Hprose/Client.php
                !isset($this->clientMap[$this->clientName])
                || !$this->clientMap[$this->clientName] instanceof HClient
            ) {
                $this->clientMap[$this->clientName] = new HttpClient($clientConfig['url'], $async);
                /*
                 * 远程调用客户端增加自定义UA 标识请求
                 * */
                if ($client_show_name = $this->container->config->hprose['client_show_name'] ?? false) {
                    $this->clientMap[$this->clientName]->setHeader('User-Agent', $client_show_name);
                }
 
                $this->clientMap[$this->clientName]
                    ->addInvokeHandler(function ($name, array &$args, stdClass $context, Closure $next) use ($clientConfig) {
                        //获取所有参数字符串
                        $str  = $args[0];
                        $args = [];
                        //aes加密参数字符串,并作为第一个参数传递给你服务端,第二个参数固定为模块id
                        $args[] = (new AesHelper())->set_key($clientConfig['key'])::encrypt($str);
                        $args[] = $clientConfig['module_id'];
                        return $next($name, $args, $context);
                    });
            }
            $this->isTo = false;
            return $this->clientMap[$this->clientName];
        } else {
            throw new Exception('Hprose配置错误');
        }
    }
 
    /**
     *  根据临时配置生成客户端
     * @param bool $async
     * @return HttpClient
     * @throws Exception
     */
    private function getClientTem($async = false)
    {
        $clientConfig = $this->temporary;
        if (isset($clientConfig['url'])) {
            $clientMapnew = new HttpClient($clientConfig['url'], $async);
/home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php
                return $this->invoke($name, $args, $callback, $settings);
            }
        }
        return $this->invoke($name, $args);
    }
 
    public function __get($name) {
        if (isset($this->methodCache[$name])) {
            return $this->methodCache[$name];
        }
        $method = new Proxy($this, $name . '_');
        $this->methodCache[$name] = $method;
        return $method;
    }
 
    protected function getNextInvokeHandler(Closure $next, /*callable*/ $handler) {
        if ($this->async) return parent::getNextInvokeHandler($next, $handler);
        return function($name, array &$args, stdClass $context) use ($next, $handler) {
            $array = array($name, &$args, $context, $next);
            return call_user_func_array($handler, $array);
        };
    }
    protected function getNextFilterHandler(Closure $next, /*callable*/ $handler) {
        if ($this->async) return parent::getNextFilterHandler($next, $handler);
        return function($request, stdClass $context) use ($next, $handler) {
            return call_user_func($handler, $request, $context, $next);
        };
    }
 
    private function asyncInvokeHandler($name, array &$args, stdClass $context) {
        $request = $this->encode($name, $args, $context);
        $self = $this;
        $beforeFilterHandler = $this->beforeFilterHandler;
        return $beforeFilterHandler($request, $context)->then(function($response) use ($self, &$args, $context) {
            return $self->decode($response, $args, $context);
        });
    }
 
    private function syncInvokeHandler($name, array &$args, stdClass $context) {
        $request = $this->encode($name, $args, $context);
/home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php
                return $this->invoke($name, $args, $callback, $settings);
            }
        }
        return $this->invoke($name, $args);
    }
 
    public function __get($name) {
        if (isset($this->methodCache[$name])) {
            return $this->methodCache[$name];
        }
        $method = new Proxy($this, $name . '_');
        $this->methodCache[$name] = $method;
        return $method;
    }
 
    protected function getNextInvokeHandler(Closure $next, /*callable*/ $handler) {
        if ($this->async) return parent::getNextInvokeHandler($next, $handler);
        return function($name, array &$args, stdClass $context) use ($next, $handler) {
            $array = array($name, &$args, $context, $next);
            return call_user_func_array($handler, $array);
        };
    }
    protected function getNextFilterHandler(Closure $next, /*callable*/ $handler) {
        if ($this->async) return parent::getNextFilterHandler($next, $handler);
        return function($request, stdClass $context) use ($next, $handler) {
            return call_user_func($handler, $request, $context, $next);
        };
    }
 
    private function asyncInvokeHandler($name, array &$args, stdClass $context) {
        $request = $this->encode($name, $args, $context);
        $self = $this;
        $beforeFilterHandler = $this->beforeFilterHandler;
        return $beforeFilterHandler($request, $context)->then(function($response) use ($self, &$args, $context) {
            return $self->decode($response, $args, $context);
        });
    }
 
    private function syncInvokeHandler($name, array &$args, stdClass $context) {
        $request = $this->encode($name, $args, $context);
/home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php
                                    call_user_func($onError, $name, $error);
                                }
                                break;
                            case 1: call_user_func($callback, $error); break;
                            case 2: call_user_func($callback, $error, $args); break;
                            case 3: call_user_func($callback, null, $args, $error); break;
                        }
                    }
                );
                return $result;
            });
        }
        else {
            if ($this->async) {
                $args = Future\all($args);
                return $args->then(function($args) use ($invokeHandler, $name, $context) {
                    return $invokeHandler($name, $args, $context);
                });
            }
            return $invokeHandler($name, $args, $context);
        }
    }
 
    protected abstract function sendAndReceive($request, stdClass $context);
 
    private $topics;
    private $id;
    private function autoId() {
        $settings = new InvokeSettings(array(
            'idempotent' => true,
            'failswitch' => true
        ));
        $args = array();
        return Future\toFuture($this->invoke('#', $args, $settings));
    }
    public function getId() {
        if ($this->id == null) {
            $this->id = $this->autoId();
        }
        return $this->id;
/home/www-data/html/vendor/hprose/hprose/src/Hprose/Client.php
                $callback = array_pop($args);
                return $this->invoke($name, $args, $callback);
            }
            else if ($args[$n - 1] instanceof InvokeSettings) {
                if (($n > 1) && ($args[$n - 2] instanceof Closure)) {
                    $settings = array_pop($args);
                    $callback = array_pop($args);
                    return $this->invoke($name, $args, $callback, $settings);
                }
                $settings = array_pop($args);
                return $this->invoke($name, $args, $settings);
            }
            else if (($n > 1) && is_array($args[$n - 1]) &&
                    ($args[$n - 2] instanceof Closure)) {
                $settings = new InvokeSettings(array_pop($args));
                $callback = array_pop($args);
                return $this->invoke($name, $args, $callback, $settings);
            }
        }
        return $this->invoke($name, $args);
    }
 
    public function __get($name) {
        if (isset($this->methodCache[$name])) {
            return $this->methodCache[$name];
        }
        $method = new Proxy($this, $name . '_');
        $this->methodCache[$name] = $method;
        return $method;
    }
 
    protected function getNextInvokeHandler(Closure $next, /*callable*/ $handler) {
        if ($this->async) return parent::getNextInvokeHandler($next, $handler);
        return function($name, array &$args, stdClass $context) use ($next, $handler) {
            $array = array($name, &$args, $context, $next);
            return call_user_func_array($handler, $array);
        };
    }
    protected function getNextFilterHandler(Closure $next, /*callable*/ $handler) {
        if ($this->async) return parent::getNextFilterHandler($next, $handler);
/home/www-data/html/vendor/skittle/tools/src/Hprose/Client.php
     */
    public function to(string $key)
    {
        $this->clientName = $key;
        $this->isTo       = true;
        return $this;
    }
 
 
    /**
     * 方法调用
     * @param $fun
     * @param $args
     * @return Collection
     * @throws Exception
     */
    public function useFunction($fun, $args)
    {
        $client          = empty($this->temporary) ? $this->getClient() : $this->getClientTem();
        $data            = $client->$fun(json_encode($args));
        $this->temporary = [];
        return is_array($data) ? $this->FormatData($data) : $data;
    }
}
 
/home/www-data/html/vendor/skittle/tools/src/Common/Site.php
     * @param array $schemes
     * @param bool $refresh
     * @return mixed
     * @throws Exception
     */
    public function getSite(array $schemes = [], bool $refresh = false)
    {
        $domain    = Site::getScheme() . Site::domain();
        $cache_key = 'site_config:' . Site::domain();
        if ($refresh) {
            $siteInfo = null;
        } else {
            $siteInfo = $this->container->cache->get($cache_key);
        }
        if (!$siteInfo) {
            $userInfo = isset($_COOKIE['token']) ? $this->container->cache->get('u_' . $_COOKIE['token']) : false;
            $siteInfo = $this->container
                ->hprose_client
                ->useFunction('getConfigByDomain', [
                    'domain'  => $domain,
                    'org_id'  => $userInfo->orgid ?? null,
                    'user_id' => $userInfo->id ?? null,
                ]);
            $this->container->cache->set($cache_key, $siteInfo, 60 * 2);
        }
        $siteInfo = json_decode($siteInfo, true);
 
        if (!empty($schemes)) {
            $siteId                          = $siteConfig['data']['site_id'] ?? null;
            $getUrlByScheme                  = $this->getUrlByScheme($schemes, $siteId);
            $siteInfo['data']['module_urls'] = $getUrlByScheme['data'] ?? [];
        }
 
        return $siteInfo;
    }
 
    /**
     * 获取主页域名
     * @return false|mixed|string
     * @throws \Skittle\Core\Exception
/home/www-data/html/app/controller/v1/Common.php
        setcookie('token', $res['data']['token'], time() + 86400, '/');

        $follow = !empty($extra) ?
            $path . '?' . http_build_query($extra) :
            $path;
        $this->res->redirect('/gqt/#/' . $follow);
    }

    public function home()
    {
        //获取主站点域名
        $currentDomain = CommonService::currentDomain();
        //原始域名
        if (strpos($currentDomain, 'shandianyun-xt.iqilu.com') !== false) {
            //新shandian365域名
            $_GET['domain'] = 'task.shandian365.com';
        }

        //获取站点配置
        $siteConfig = SkittleClient::instance()->site->getSite(['sucai', 'system_config', 'draft', 'miaobi', 'notice'], true);
        //$siteConfig['data']['module_domain'] = CommonService::currentDomain();
    
    //获取主站点域名
        $homeDomain = SkittleClient::instance()->site->getHomeDomain();

        //如果配置code == 0 ,则当站点未配置
        if (isset($siteConfig['code']) && $siteConfig['code'] == 0) {
            return $this->error('站点配置错误');
    }
        if (isset($_COOKIE['token'])) {
        $html = file_get_contents(WEBROOT . DS . '..' . DS . 'html' . DS . 'index.html');
        $html = str_replace("{ config }", json_encode($siteConfig['data'] ?? []), $html);
            echo $html;
        } else {
            $this->res->redirect($this->getConfig($homeDomain));
        }
    }

    public function gqtHome()
    {
/home/www-data/html/vendor/skipify/vitex/vitex/core/Router.php
         * 返回一个可执行的闭包
         */
        return function () use ($obj, $method, $routeMethods) {
            /**
             * 路由前执行的方法
             */
            $beforeData = null;
            if (isset($routeMethods['before'])) {
                $beforeData = call_user_func_array($routeMethods['before'], [Request::getInstance(), Response::getInstance()]);
            }
 
            /**
             * 包裹路由执行
             */
            if (isset($routeMethods['wrap'])) {
                $result = call_user_func_array($routeMethods['wrap'], [function () use ($obj, $method) {
                    return $obj->{$method}();
                }, Request::getInstance(), Response::getInstance(),$beforeData]);
            } else {
                $result = $obj->{$method}();
            }
 
            /**
             * 路由后执行的方法
             */
            if (isset($routeMethods['after'])) {
                call_user_func_array($routeMethods['after'], [Request::getInstance(), Response::getInstance(),$result]);
            }
            return $result;
        };
    }
 
    /**
     * 匹配URL匹配信息
     * @internal param array $params 匹配的URL段
     * @param  array $matches
     * @return object
     */
    public function _parseParams(array $matches)
    {
/home/www-data/html/vendor/skipify/vitex/vitex/core/Route.php
        $this->_router = null;
        return $this;
    }
 
    /**
     * 执行下一个匹配的URL规则
     * @return self
     */
    public function next()
    {
        if (!$this->_router) {
            $this->_router = $this->router->getRouter();
        }
 
        $vitex = Vitex::getInstance();
        $call = $this->_router->current();
        if (is_callable($call)) {
            call_user_func($call, $vitex->req, $vitex->res, function () {
                $this->nextRouter();
            });
        } else {
            call_user_func($this->_notfound, $vitex->req, $vitex->res, function () {
                $this->nextRouter();
            });
        }
        return $this;
    }
 
    /**
     * 执行下一次路由匹配
     * @return void
     */
    private function nextRouter()
    {
        $this->_router->next();
        $this->next();
    }
}
 
/home/www-data/html/vendor/skipify/vitex/vitex/core/Route.php
        $this->_router = null;
        return $this;
    }
 
    /**
     * 执行下一个匹配的URL规则
     * @return self
     */
    public function next()
    {
        if (!$this->_router) {
            $this->_router = $this->router->getRouter();
        }
 
        $vitex = Vitex::getInstance();
        $call = $this->_router->current();
        if (is_callable($call)) {
            call_user_func($call, $vitex->req, $vitex->res, function () {
                $this->nextRouter();
            });
        } else {
            call_user_func($this->_notfound, $vitex->req, $vitex->res, function () {
                $this->nextRouter();
            });
        }
        return $this;
    }
 
    /**
     * 执行下一次路由匹配
     * @return void
     */
    private function nextRouter()
    {
        $this->_router->next();
        $this->next();
    }
}
 
/home/www-data/html/vendor/skipify/vitex/vitex/Vitex.php
        //预处理中间件
        $this->using(new middleware\Cookie());
        //预处理中间件执行
        if ($this->preMiddleware) {
            $this->preMiddleware->call();
        }
        return $this;
    }
 
    /**
     * 路由分发
     * 加载路由以及分组,匹配执行
     * @return $this
     */
    public function routeDispatch()
    {
        $this->applyHook('sys.before.router');
        //分组
        $this->route->applyGroup();
        $this->route->next();
        $this->applyHook('sys.after.router');
        return $this;
    }
 
    /**
     * 启动程序
     */
    public function run()
    {
        //输出指定编码以及格式
        $this->res->setHeader("Content-Type", "text/html;charset=" . $this->getConfig("charset"))->sendHeader();
        set_error_handler(array($this, 'errorHandler'));
        if ($this->getConfig('debug')) {
            $this->log->setWriter(new LogWriter());
        }
        $this->runLoadMiddleware();
        $this->routeDispatch();
 
        restore_error_handler();
    }
/home/www-data/html/vendor/skipify/vitex/vitex/Vitex.php
        //分组
        $this->route->applyGroup();
        $this->route->next();
        $this->applyHook('sys.after.router');
        return $this;
    }
 
    /**
     * 启动程序
     */
    public function run()
    {
        //输出指定编码以及格式
        $this->res->setHeader("Content-Type", "text/html;charset=" . $this->getConfig("charset"))->sendHeader();
        set_error_handler(array($this, 'errorHandler'));
        if ($this->getConfig('debug')) {
            $this->log->setWriter(new LogWriter());
        }
        $this->runLoadMiddleware();
        $this->routeDispatch();
 
        restore_error_handler();
    }
 
}
 
/home/www-data/html/webroot/index.php
$capsule->bootEloquent();
 
$vitex->get('/loginJump', 'v1\Common@loginJump');
$vitex->get('/gqt_login', 'v1\Common@gqtLogin');
$vitex->get('/', 'v1\Common@home');
$vitex->get('/gqt', 'v1\Common@gqtHome');
$vitex->all('/hprose/server', 'Hprose@start');
$vitex->group('/', 'screen');
$vitex->group('/', 'index');
$vitex->get('/tasks/pdf-download', 'v1\PDF@download');
$vitex->get('/task-equip/qrcode', 'v1\TaskEquipment@equipCode');
$vitex->get('/task/count', 'v1\TaskShow@taskCount');
$vitex->get('/orgs/task-count', 'v1\TaskShow@taskCountByIds');
$vitex->group('open-service', 'open-service');
$vitex->group('equip-api', 'equip-api');
$vitex->group('task', 'task');
$vitex->group('task-job', 'task-job');
$vitex->group('/mtrh', 'mtrh');
 
$vitex->run();
 

Environment & details:

empty
empty
empty
Key Value
PHPSESSID 5urqp6pe3s8adq0fb28rpl3bcq
empty
Key Value
USER www-data
HOME /var/www
HTTP_COOKIE PHPSESSID=5urqp6pe3s8adq0fb28rpl3bcq
HTTP_ACCEPT_ENCODING gzip, br, zstd, deflate
HTTP_USER_AGENT Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HTTP_ACCEPT */*
HTTP_X_FORWARDED_SSL on
HTTP_X_FORWARDED_PORT 443
HTTP_X_FORWARDED_SCHEME https
HTTP_X_FORWARDED_PROTO https
HTTP_X_FORWARDED_FOR 216.73.217.14
HTTP_REMOTE_HOST 216.73.217.14
HTTP_X_REAL_IP 216.73.217.14
HTTP_HOST gstv-task.sdy.qiludev.com
HTTP_CONNECTION upgrade
PATH_INFO
REDIRECT_STATUS 200
SERVER_NAME _
SERVER_PORT 80
SERVER_ADDR 172.8.1.27
REMOTE_PORT 36154
REMOTE_ADDR 172.8.1.25
SERVER_SOFTWARE nginx/1.29.4
GATEWAY_INTERFACE CGI/1.1
REQUEST_SCHEME http
SERVER_PROTOCOL HTTP/1.1
DOCUMENT_ROOT /home/www-data/html/webroot
DOCUMENT_URI /index.php
REQUEST_URI /
SCRIPT_NAME /index.php
CONTENT_LENGTH
CONTENT_TYPE
REQUEST_METHOD GET
QUERY_STRING
SCRIPT_FILENAME /home/www-data/html/webroot/index.php
FCGI_ROLE RESPONDER
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1776512776.395
REQUEST_TIME 1776512776
APP_KEY f4LBuSQ6lCvKRRj7
DOMAIN https://gstv-task.sdy.qiludev.com
PC_LOGIN_URL https://gstv-home.sdy.qiludev.com/index.html
MODULE_ID 57d6eb9dd26f620e358e1995dbd1cc4f
MODULE_KEY 6dubif5i6g5k114mr2pspow7u42cyr7h
MYSQL_USERNAME root
MYSQL_PASSWORD Iqilu@11231
MYSQL_HOST 192.168.10.51
MYSQL_DATABASE gstv_fugui_xt
MYSQL_CHARSET utf8
MYSQL_PREFIX xt_
MIGRATION_MYSQL_USERNAME
MIGRATION_MYSQL_PASSWORD
MIGRATION_MYSQL_HOST
MIGRATION_MYSQL_DATABASE
MIGRATION_MYSQL_CHARSET
HPROSE_FUGUI https://gstv-centre.sdy.qiludev.com/open/hprose/start
HPROSE_IM https://gstv-im.sdy.qiludev.com/hprose/server
HPROSE_CLUE https://gstv-clue.sdy.qiludev.com/hprose/server
HPROSE_ARTICLE https://gstv-article.sdy.qiludev.com/hprose/server
HPROSE_INTEGRAL https://gstv-integral.sdy.qiludev.com/hprose/server
HPROSE_SYSTEM_CONFIG https://gstv-config.sdy.qiludev.com/hprose/server
HPROSE_SUCAIKU https://gstv-sucai.sdy.qiludev.com/hprose/server
HPROSE_TODO https://gstv-todo.sdy.qiludev.com/hprose/server
EQUIP_RM_URI http://10.30.76.60:8080/iqilu_war
EQUIP_LOCAL_URI http://shandianyun-sbgl.iqilu.com
PREDIS_PARAMTERS ["tcp://192.168.10.84:17001"]
PREDIS_OPTIONS {"replication":"sentinel","service":"T1","parameters":{"password":"Iqilu@11231","database":"5"}}
ES_CONNECT {"hosts":["elastic:Iqilu@11231@192.168.10.77:9200"],"SSLVerification":false,"retries":2}
FFMPEG_PATH /usr/bin/ffmpeg
FFPROBE_PATH /usr/bin/ffprobe
OTHER_DOMAIN https://gstv-img12.sdy.qiludev.com
OTHER_DOMAIN_COUNTY https://gstv-img12.sdy.qiludev.com
OTHER_PATH /mount/shandianyun/img12
MEDIA_DOMAIN https://gstv-stream7.sdy.qiludev.com
MEDIA_DOMAIN_COUNTY https://gstv-stream7.sdy.qiludev.com
MEDIA_PATH /mount/shandianyun/stream7
CLUE_JUMP_URL https://gstv-clue.sdy.qiludev.com/loginJump
ARTICLE_JUMP_URL https://gstv-article.sdy.qiludev.com/jump
ARTICLE_GQT_JUMP_URL
CACHE_NAMESPACE xt.task.cache
USER_CACHE_NAMESPACE xt.task.user.cache
APP_CACHE_KEY xt.task.app
LOG_CHANNEL task
LEASED_EQUIPMENT_URL
Key Value
APP_KEY f4LBuSQ6lCvKRRj7
DOMAIN https://gstv-task.sdy.qiludev.com
PC_LOGIN_URL https://gstv-home.sdy.qiludev.com/index.html
MODULE_ID 57d6eb9dd26f620e358e1995dbd1cc4f
MODULE_KEY 6dubif5i6g5k114mr2pspow7u42cyr7h
MYSQL_USERNAME root
MYSQL_PASSWORD Iqilu@11231
MYSQL_HOST 192.168.10.51
MYSQL_DATABASE gstv_fugui_xt
MYSQL_CHARSET utf8
MYSQL_PREFIX xt_
MIGRATION_MYSQL_USERNAME
MIGRATION_MYSQL_PASSWORD
MIGRATION_MYSQL_HOST
MIGRATION_MYSQL_DATABASE
MIGRATION_MYSQL_CHARSET
HPROSE_FUGUI https://gstv-centre.sdy.qiludev.com/open/hprose/start
HPROSE_IM https://gstv-im.sdy.qiludev.com/hprose/server
HPROSE_CLUE https://gstv-clue.sdy.qiludev.com/hprose/server
HPROSE_ARTICLE https://gstv-article.sdy.qiludev.com/hprose/server
HPROSE_INTEGRAL https://gstv-integral.sdy.qiludev.com/hprose/server
HPROSE_SYSTEM_CONFIG https://gstv-config.sdy.qiludev.com/hprose/server
HPROSE_SUCAIKU https://gstv-sucai.sdy.qiludev.com/hprose/server
HPROSE_TODO https://gstv-todo.sdy.qiludev.com/hprose/server
EQUIP_RM_URI http://10.30.76.60:8080/iqilu_war
EQUIP_LOCAL_URI http://shandianyun-sbgl.iqilu.com
PREDIS_PARAMTERS ["tcp://192.168.10.84:17001"]
PREDIS_OPTIONS {"replication":"sentinel","service":"T1","parameters":{"password":"Iqilu@11231","database":"5"}}
ES_CONNECT {"hosts":["elastic:Iqilu@11231@192.168.10.77:9200"],"SSLVerification":false,"retries":2}
FFMPEG_PATH /usr/bin/ffmpeg
FFPROBE_PATH /usr/bin/ffprobe
OTHER_DOMAIN https://gstv-img12.sdy.qiludev.com
OTHER_DOMAIN_COUNTY https://gstv-img12.sdy.qiludev.com
OTHER_PATH /mount/shandianyun/img12
MEDIA_DOMAIN https://gstv-stream7.sdy.qiludev.com
MEDIA_DOMAIN_COUNTY https://gstv-stream7.sdy.qiludev.com
MEDIA_PATH /mount/shandianyun/stream7
CLUE_JUMP_URL https://gstv-clue.sdy.qiludev.com/loginJump
ARTICLE_JUMP_URL https://gstv-article.sdy.qiludev.com/jump
ARTICLE_GQT_JUMP_URL
CACHE_NAMESPACE xt.task.cache
USER_CACHE_NAMESPACE xt.task.user.cache
APP_CACHE_KEY xt.task.app
LOG_CHANNEL task
LEASED_EQUIPMENT_URL
0. Whoops\Handler\PrettyPageHandler