最近、私のホスティング会社がサーバーを更新しました。私のコードの非効率性が明るみに出ていると思います。
私はこのコードを持っています:
#!/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 に同じセットアップを使用してきました。なぜ今短いエラーを引き起こしているのかわかりませんが、それは重要ではありません。