我的代码没有这一行就顺利运行。(我只是评论这一行)
std::string cookie;
cookie = FCGX_GetParam("HTTP_COOKIE", request.envp);
当此行被取消注释时,代码仍然可以与发送cookie的客户端顺利运行,但是当客户端没有cookie时,某些东西会破坏系统。会有什么问题呢?即使我使用try {} catch (...) {}
代码仍然崩溃,并且将导致502为fastcgi。
代码崩溃的时候
upstream prematurely closed connection while reading response header from upstream
此错误消息是在nginx错误日志中记录的。然后cgi不再工作,连接被拒绝。我需要重新生成它以使代码再次运行。
答案 0 :(得分:0)
结果:值绑定到name,如果环境envp中没有名称,则为NULL。调用者不得改变结果或在结束此请求后保留结果。
因为如果没有cookie,它将返回NULL,doc说它不能改变结果。 所以这个问题可以解决 std :: string cookie;
if (FCGX_GetParam("HTTP_COOKIE", request.envp) != NULL){
cookie = FCGX_GetParam("HTTP_COOKIE", request.envp);
}