最近我的托管公司更新了他们的服务器,我相信我的代码效率低下正在被曝光。
我有这个代码:
#!/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
这很好,直到(似乎)更新 - 现在我在我的日志中收到这个错误:
- 无法在 /home/users/web/XXXX/my-file.cgi 第 10 行的未定义值上调用方法“id”。
然后我将其编辑到第 10 行:
$cookie = $cgi->cookie(CGISESSID => $session->id) || undef;
认为它会解决这个问题,但它没有。
它似乎导致了一个短暂的 500 服务器错误,然后该站点重新上线,会话 ID 在错误中持续存在。
我完全不知道发生了什么。更糟糕的是,并不是每次页面加载时都会发生这种情况——它看起来很随机,但我确信我只是没有遇到导致该错误的具体情况。
在过去的 7 年里,我一直在为我所有的 cgi 使用相同的设置。不知道为什么它现在会导致一个短暂的错误,但这不是重点。