莫名出現(xiàn)一個(gè)錯(cuò)誤:
session_id 9e61dd40701ad941b20a0011467bf045,PHPSID=9e61dd40701ad941b20a0011467bf045 is invalid in xxx/vendor/workerman/workerman/Protocols/Http/Session.php:426
請(qǐng)問可以怎么排查?
1: 先給完整的錯(cuò)誤棧
2:一般不用管他
0 /home/wwwroot/www/vendor/workerman/workerman/Protocols/Http/Session.php(144): WorkermanProtocolsHttpSession::checkSessionId()
1 /home/wwwroot/www/vendor/workerman/workerman/Protocols/Http/Request.php(268): WorkermanProtocolsHttpSession->__construct()
2 /home/wwwroot/www/app/index/controller/User.php(60): WorkermanProtocolsHttpRequest->session()
3 [internal function]: appindexcontrollerUser->beforeAction()
4 /home/wwwroot/www/vendor/webman/action-hook/src/ActionHook.php(28): call_user_func()
5 /home/wwwroot/www/vendor/workerman/webman-framework/src/App.php(271): WebmanActionHookActionHook->process()
6 /home/wwwroot/www/vendor/workerman/webman-framework/src/App.php(118): WebmanApp::Webman{closure}()
7 /home/wwwroot/www/vendor/workerman/workerman/Connection/TcpConnection.php(646): WebmanApp->onMessage()
8 [internal function]: WorkermanConnectionTcpConnection->baseRead()
9 /home/wwwroot/www/vendor/workerman/workerman/Events/Event.php(193): EventBase->loop()
10 /home/wwwroot/www/vendor/workerman/workerman/Worker.php(1629): WorkermanEventsEvent->loop()
11 /home/wwwroot/www/vendor/workerman/workerman/Worker.php(1423): WorkermanWorker::forkOneWorkerForLinux()
12 /home/wwwroot/www/vendor/workerman/workerman/Worker.php(1397): WorkermanWorker::forkWorkersForLinux()
13 /home/wwwroot/www/vendor/workerman/workerman/Worker.php(1779): WorkermanWorker::forkWorkers()
14 /home/wwwroot/www/vendor/workerman/workerman/Worker.php(1715): WorkermanWorker::monitorWorkersForLinux()
15 /home/wwwroot/www/vendor/workerman/workerman/Worker.php(562): WorkermanWorker::monitorWorkers()
16 /home/wwwroot/www/vendor/workerman/webman-framework/src/support/App.php(124): WorkermanWorker::runAll()
17 /home/wwwroot/www/start.php(4): supportApp::run()
18 {main}
你好,根據(jù)你的反饋,問題可能出現(xiàn)在appindexcontrollerUser->beforeAction(),你可能擅自調(diào)用了session的一些功能,這個(gè)是找不到session_file映射導(dǎo)致的,如果你沒有代碼操作session,可能是你刪除了正在運(yùn)行的/tmp/session_*等文件
我看了下,beforeAction里沒有session操作。如果這個(gè)是找不到session_file映射導(dǎo)致的,那應(yīng)該沒有影響吧。只是報(bào)錯(cuò)倒無所謂。
public function process(Request $request, callable $next): Response
{
if (!self::checkSession($request, ['User', 'Admin'])) {
return $next($request);
}
$request->session = new \Workerman\Protocols\Http\Session($request->header(‘jwt', 'null'));
$account = $request->session()->get('account', false);
$uid= $request->session()->get('uid',false);
if (!$account || !$uid) {
return json(['code' => 401, 'msg' => '身份已失效']);
}
$request->account = $account;
$request->uid =$uid;
return $next($request);
}
你這種情況只有像我這種自定義 middleware的時(shí)候,并且還是用了 session機(jī)制,前端傳過來的jwt作為sessionKey的時(shí)候,/tmp/session_* 找不到對(duì)應(yīng)文件的時(shí)候才會(huì)出現(xiàn)這個(gè)問題。這個(gè)問題是webman的內(nèi)置的報(bào)錯(cuò),一般不用理會(huì)
session_id is invalid 字面意思,session_id無效。
可能是一些探測(cè)程序設(shè)置了一些奇怪的session_id。這個(gè)錯(cuò)誤不影響正常用戶,不用管。