バージョン2ほぼ完成

 昨日いっていた、掲示板CGIにおいて発生していたエラー。とりあえず解消しました。

CWDの問題

 カレントワーキングディレクトリを返すはずのCWDが、なぜか期待どおりの値を返してくれないものだから、必要なファイルが読み込めずエラーが出ていました。なにが原因であるか調べたりもしたのですが、どうにもわからず、しかたがないので対症療法的だけど、メソッドをひとつ増やして解決しました。

 設定ファイルにワーキングディレクトリのパスを記入することにして、もしそれがブランクであった場合にはCWDの返り値を、ブランクでなかった場合にはユーザー指定のパスを返すようなメソッドを作ったのでした。そして、これまでCWDからパスを取得するようになっていたところを、片っ端から新メソッドget_working_directoryを使うように書き換えて、これでなんとか期待通りの動作をするようになりました。

CGI.pmの問題

 掲示板CGIでは、CGI.pmを使用しているのですが、HTMLのヘッダ(つまりDTDからbody要素の開始タグまで)を出力させようというときにエラーを出していたのでした。

 このエラー、一体なんで出るのかがわかりません。それこそ『CGI - 簡単なCGI(Common Gateway Interface)クラス』において説明されているように書いているというのに。開発環境でもエラーは出ず、それに同じように書いていたweb拍手支援cgiでも問題は出ず、なのに今回だけ出る。一体なんでなんだろうと頭を抱えたくなります。

 問題のコードがこれです:

    print $q->start_html(-lang=>$pm->get_language_selected,
             -title=>$pagetitle,
             -head=>[meta({-http_equiv=>'Content-Style-Type',
                       -content=>'text/css'}),
                 Link({-rel=>'stylesheet',
                       -href=>$pm->get_path_css_rel,
                       -type=>'text/css'})]);

 これはもう、説明どおりなんですが、ですがこれだとなんでかmetaLinkがCGI.pmのメソッドではなく、この掲示板クラスのメソッドと勘違いされてしまって、だからエラー。一体どうしたものかと迷った結果、metaLinkがCGI.pmに属するメソッドなんだということを明記することにしました。

    print $q->start_html(-lang=>$pm->get_language_selected,
             -title=>$pagetitle,
             -head=>[$q->meta({-http_equiv=>'Content-Style-Type',
                       -content=>'text/css'}),
                 $q->Link({-rel=>'stylesheet',
                       -href=>$pm->get_path_css_rel,
                       -type=>'text/css'})]);

 とりあえず、これで解決。でも、正直ちょっと迷いました。環境によってこれだけの違いが出るのかと正直驚いて、来週にはBSD & Apacheでテストしてみたいと思います。


<

わたしの愛した機械へ トップページに戻る

公開日:2006.07.14
最終更新日:2006.07.14
webmaster@kototone.jp
Creative Commons License
こととねは、クリエイティブ・コモンズ・ライセンス(表示 - 継承 2.1 日本)の下でライセンスされています。