みかりさん、
なるほど、そうでしたか。。
私は確認したことはありませんが、まあそういうことはありうるとは思います。
しばらく通信できなかったので少々
古ものへの Re. ですけど……、
スクリプトで Version を調べられると書かれていたので、
その辺りを Perl の本を調べて、
|#!/wwwroot/cgi-bin/perl
|print "Content-Type: text/plain\n\n";
|print $^O.' '.$].' '.$^X.' '.$0.' '.$<.' '.$>.' '.$(.' '.$);
これで調べてみたら、5.3.7 でした、そこで 5.3.7 を探して
試してみたところ、5.5.3 や 5.6.0 と 5.3.7 ではシフト演算の
意味が違っていました。
5.3.7 では算術シフト、5.5.3/5.6.0 では論理シフトになってました。
このために、シフトを使っている CRCの計算の部分で値が狂って
しまってたのが原因でした>PNG画像合成の失敗。
みかりさん、
IISが動いているサーバのCPUは何でしょうね。Alphaチップとかいうことはありませんか(?)。
Perlのバージョンはスクリプトで表示できると思います。
IIS/PWS は最近のバージョンのものではCGIを動かすのも簡単なはずです。
>伝言板の方はどうなりましたか?
いろいろと変更しては見ましたが、相変わらず、
Runtime Expectation とのメッセージを返してきます。
らちがあかないので緊急避難として CGI だけ別のサーバに
登録してみようと思います。
.png は、テーブルを使わないで CRC を計算するルーチンを
搭載したライブラリに差し替えてみたのですが、やはり CRC
が狂っています(テキストチャンクにライブラリ名を入れる
ようにして確認しましたが、require している実体には
間違い有りませんでした)
念のため 桜月さんの PNGカウンタ も試してみましたがそちらの
ほうも CRC部分が狂っていました。
そこで、その3つのソースを見比べてみるといずれも、Pack/UnPack
が重要な位置を占めているのでこの辺りが悪さをしているのかも
しれません。
Perl の詳細な Version を教えてくれないので、次の手としては、
Pack を N → CCCC 等と置き換えた版を試す予定です。
>いずれにしろ IIS/PWS は使えるのでしょう。
PWS をインストールしてみましたが、CGI の起動がされていないようです。
設定を行えるような欄も見あたらなくてこちらでのテストは現在手詰まり
状態となってます。
# 1.33c は元気に動いています。
みかりさん、
.pl だからといってIISとは限りませんが、Server: がそうならそうなのでしょう。
伝言板の方はどうなりましたか?
.png の方は、require している実体が違っているのではないかという気がしますが、調べていけばわかるのでしょう。
IISは、NT Server や Windows2000 付属です。NT Workstation や Win9x でも PWS はついています。WinMeではどっちか知りませんが、いずれにしろ IIS/PWS は使えるのでしょう。
設定も含めてとなれば、NT/2000 で NTFS の環境でやるのがいいのだと思いますが。
中田さん、Reありがとうございます。
>OSとサーバは何でしょうか?
OS は NT です、サーバは CGIの拡張子が .pl なので IIS でしょう。
(AN HTTPD のログを調べたら Server: Microsoft-IIS/4.0 となっていました)
プロクシとキャッシュを有効にして調べてみたところ png は CRC が
狂っていました。
家で動作している 3種の Perl ではどれも正常に計算できているので
その辺りのコードの挙動が Server上ではおかしくなっているようです。
オリジナルソースでは、CRC32 のテーブルを Require の時に作成して
それを参照して計算させていたのを、CRCテーブルの作成のタイミングを
変更した物、加えてCRCテーブルを格納する名前の定義位置を変更したもの、
CRC32 をテーブルを使わないで計算するように変更した物のアップロード
を接続業者に依頼したのでその登録がすんだらもう一度テストしてみます。
(当然 ANHTTPD上ではそのどれも正常に動作しています)
ところで、IISのテスト環境って個人で簡単に作れるのでしょうか?
(NT や Win2000 に付属のソフトウェアなのでしょうか>IIS)
# このような機能もあったのですね。
シンプルだけどなかなか深いです>ANHTTPD
みかりさん、
原因は他にもいろいろあるでしょうが、これだけではなんとも言えませんね。
OSとサーバは何でしょうか?
UNIX/Linux で Apache ですか? 「int 0D: 一般保護例外」というと WindowsNTでIISなのでしょうか?
伝言板の方は、いずれにしろちょっと見当がつきません。
サーバのエラーログなどを見られない場合は、最初の部分から少しずつ実行するなどしてどこでエラーが起きるのかを調べるというのが普通でしょう。
png 画像の方は、AN HTTPD のプロクシを通してトレースログをとり、サーバが実際にどのような応答を(応答ヘッダも含めて)返しているか確かめてみるのがよいと思います。
ローカルなテストでは動作していて、
サーバ上では動作しないのってディレクトリの
設定違いやアクセス権の設定以外に何が原因の
可能性があるでしょうか?
1つは、伝言板で、
|Error in CGI Application
|CGI Error
|The specified CGI application misbehaved by not returning
|a complete set of HTTP headers. The headers it did return are:
|Error: Runtime exception
というエラーとなります。
Perl で権限のないメモリを触って int 0D: 一般保護例外 を出して
しまったわけでもないでしょうし。
もう一つは、ダウンロードカウンタで、ログ動作は上手くいっている
ようなのですが png 画像の出力が駄目なようです。
|print "Content-type: image/png\n\n";
としてありますので、HTTP Header は間違いないようなのですが……。
(どちらも、AN HTTPD + DJGPP版 Jperlや、Perl for Win32 や、ActivePerl
で動作は確認済みです−ディレクトリ構成は、サーバのに合わせています。
サーバでは CGI に、.pl の拡張子を要求してます−)
何方か、お気付きの点が合ったらヒントを下さい。