0

最近、私のホスティング会社がサーバーを更新しました。私のコードの非効率性が明るみに出ていると思います。

私はこのコードを持っています:

    #!/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 に同じセットアップを使用してきました。なぜ今短いエラーを引き起こしているのかわかりませんが、それは重要ではありません。

4

1 に答える 1

1

$sessionですので、 undef が返さundefれたことを意味します。newドキュメントには、それについて次のように書かれています。

新しいセッション オブジェクトを返すか、失敗した場合は undef を返します。エラー メッセージは errstr() - クラス メソッドからアクセスできます。

それでCGI::Session->errstr、問題が何であるかを調べるために電話してください。

于 2013-05-31T03:33:34.923 に答える