最近我的托管公司更新了他们的服务器,我相信我的代码效率低下正在被曝光。
我有这段代码:
#!/usr/bin/perl
use CGI qw(:standard);
use CGI::Session;
$cgi = new CGI;
$sid = $cgi->cookie("CGISESSID") || undef;
$session = new CGI::Session(undef, $sid, {Directory=>'/tmp'});
$cookie = $cgi->cookie(CGISESSID => $session->id);
$sSid = $session->id();
print $cgi->header(-cookie=>$cookie);
print << "EOF";
HTML CODE
EOF
这很好,直到(似乎)更新 - 现在我在我的日志中收到此错误:
$cookie = $cgi->cookie(CGISESSID => $session->id) || undef;
确定会解决这个问题,但事实并非如此。
它似乎导致短暂的500服务器错误,然后该网站重新联机,会话ID持续存在错误。
我完全迷失了所发生的事情。更糟糕的是,每次页面加载时都不会发生 - 它似乎是随机的,但我确信我只是没有遇到具体情况带来的错误。
在过去的7年里,我一直在使用相同的设置来处理我的所有cgi。不知道为什么它现在引起了一个短暂的错误,但那就是重点。
答案 0 :(得分:1)
$session
是undef
,这意味着new
返回了undef。文档有以下内容可以说:
返回新的会话对象,或者在失败时返回undef。可以通过errstr() - 类方法访问错误消息。
请致电CGI::Session->errstr
以了解问题所在。