プロが教える店舗&オフィスのセキュリティ対策術

サーバマシンにウェブサイトで公開されているCGIプログラムをDLし、cgi-binディレクトリに置いて動かそうとしたのですが、文字化けします。

ネットワーク環境は、1台のルーターの下にサーバマシン1台(OS:RedHat9,Webサーバ:Apache1.3.33, IP:192.168.1.10)、クライアントマシン数台(OS:Windows 2000, IP:192.168.1.*)となっています。

まず、Kent Webさんのサイトhttp://www.kent-web.com/から掲示板「プチ☆ボード」をサーバマシンにDLし、httpd.confのScriptAliasで設定したcgi-binディレクトリに設置したところ、動作はするものの文字化けしてしまいます。
サーバマシンのMozillaから書き込んでみると、サーバマシンからでもクライアントマシンのIEからでも日本語は文字化けします。クライアントマシンから書き込んでみると、サーバマシンでもクライアントマシンでもその書き込みだけは文字化けしません。

同じくKent WebさんにあるDiary Note(気まぐれ日記)というCGIをDLし設置してみると、文字化けでタグが壊れているのか、トップページは表示されるもののリンク先へ飛びません。別ファイルから読み込むメッセージの部分だけは日本語で正しく表示されますが、他の部分はすべて日本語は文字化けしています。
テキストエディタでdiary.cgiファイルを開いてみると、日本語部分は文字化けしています。
そこで、一度クライアントマシンにプログラムをウェブサイトからDLし、FFFTPでASCIIモード、EUCコードに設定してdiary.cgiファイルをサーバマシンへアップロードしてみました。すると、テキストエディタで開くと日本語部分が正しく表示されるものの、cgi-binディレクトリにそのファイルを置いてブラウザからアクセスしてみると、やはり文字化けして動作しません。

どうすれば表示・動作が正しくなるのでしょうか?

A 回答 (4件)

>Shift JISで保存しているようです。


なるほど、多分、気を利かしてそうしているのでしょうね。<この場合いらんことですけど(^^;

>サーバマシンでファイルをいじるものではない
なるほど、
ロックされたりすると(クライアントが)困りますもんね。マシンパワーを使ってしまうしね。(GUIなんかで作業してたら大変な気もしますしね)
一理あると思います。
サーバーマシンしかない時は、一端作業用にコピーして作業すればいいかと思います。
    • good
    • 0
この回答へのお礼

> マシンパワーを使ってしまうしね。(GUIなんかで作業してたら大変な気もしますしね)
すべてCUIで操作できるといいのですが、せかされているためじっくり基礎からやることができず、ついGUI環境を使ってしまいます。
無理をしてでもCUIでの操作を覚えてしまえばいいんでしょうけど。

今回は、本当にありがとうございました。
また機会がありましたら(おそらく何度もあると思いますが^^;)よろしくお願いします。

お礼日時:2004/12/02 22:29

>Linuxのテキストエディタで少しでもいじると文字化けしてしまいます。


Linuxでエディタを起動して編集しているのではなくて、
IEとかで接続して、エディタを起動して編集しているのですか?
そうしたネットワーク接続した端末から、ちゃんと編集できるエディタではないのかもしれませんね。
(勘違いしてますか、私?)
Linuxのエディタは、2バイトをちゃんと扱えるエディタなのでしょうか?
(例えば、カーソル移動で、全角文字の処は、全角でカーソルが移動し、Deleteキー一回で1文字が消える)
そうでないなら、エディタが想定している位置と現在編集している位置が違ってしまって、化けてしまっているのかもしれません。

日本語が扱えるエディタを導入・構成しましょう。
まあ、同じコトなら、winで作業すればいいとも思いますけど。
    • good
    • 0
この回答へのお礼

何度もお付き合いいただき、ありがとうございます。
「テキストエディタ」とは、いわゆる一般的なテキストファイルを加工するエディタのことではなく、RedHatのスタートメニューの[アクセサリ]に入っているアプリケーションの名前です。ちょうどWindowsの「メモ帳」と同じようなものです。私の説明不足でした。すみません。
このエディタ、わざわざEUCに変換して送ったファイルをShift JISで保存しているようです。
emacsエディタでいじってみると、問題なく保存できました。
そして、経験者の方に「そもそも、サーバマシンでファイルをいじるものではない」と注意されました。無知なもので、こんな基本的なことも知りませんでした。
WindowsのクライアントからFTPサーバまたはファイルサーバ経由でアップする分には問題ありませんから、このことは「気にしない」ということで、いったん済ませてしまうことにします。

プチ☆ボードだけでなく、他のCGIプログラムも、多少の問題をはらみつつも動くようになりました。
これもひとえにBLUEPIXYさんのおかげです。
丁寧なお答え、とても参考になり、助かりました。
本当にありがとうございました。

お礼日時:2004/12/02 18:56

まずは、おめでとうございます!


(^o^)/

>Win 2kマシンで編集したpetit.cgiを…
ダウンロードしたCGIファイル自体がシフトJISで作成されています。
なので、メッセージの表示部分(全角文字列が埋め込まれている部分)が、EUCで表示しようとすると化けてしまいます。
そのためにサーバーにアップする前に、あらかじめファイルを変換してやらないといけません。
一端変換してアップしてからであれば、その後ファイルをいじるのは問題ない(変更する手順が重要なのではなくて単にファイルの書かれているコードの問題)と思います。
    • good
    • 0
この回答へのお礼

> まずは、おめでとうございます!
まず目的が達成できて、一安心です。本当にありがとうございますm(_ _)m

引き続きいろいろやってみているのですが、FFFTPでWin→RedHatに転送したpetit.cgiは、Linuxのテキストエディタで少しでもいじると文字化けしてしまいます。
たとえば、コメントアウト行(行頭が#で始まっている行のことです。この呼び名でいいのかな?)に半角スペースをひとつ入れて保存とか、スペースを挿入、即座にバックスペースで削除して元に戻し保存とか、ほんのわずかいじっただけでも、文字化けしてしまうのです。
クライアントのOperaとIE、サーバのMozillaでそれぞれエンコードを自動判別、Shift JIS、EUCとして試しても、いずれも化けています。

念のためFFFTPの設定を。
[オプション]の[転送1]で転送モードは[常にASCIIモード]
[接続]→[ホスト一覧]→[ホストの設定]→[文字コード]で
ホストの漢字コード:EUC,ファイル名の漢字コード:euc,両方の欄で[半角カナを全角に変換]にチェック(といっても、半角カナなんかファイル内にありませんが)

なにやら奥の深そうな問題なので、参考になるサイトや解決のヒントだけでも教えていただけると幸いです。

お礼日時:2004/12/02 14:06

Bongさんの環境は、質問文から多分EUCなのですね。


くだんの(プチ☆ボード)プログラムは、シフトJISの環境で動かすことを想定しているようです。

# 文字コードをシフトJIS変換
&jcode'convert(*val, "sjis", "", "z");
の部分を
# 文字コードをEUC変換
&jcode'convert(*val, "euc", "", "z");
にして、
EUCでアップロードしてみて下さい。
試してないので、ウマくいくかどうかはわかりませんけど。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
おっしゃるとおりにやってみると、問題解消しました。
数日間この問題にひっかかっていたので、本当に感謝します。

ところで、実ははじめ忠告に従わずサーバマシンのテキストエディタでpetit.cgiを書き換えながら試行錯誤していたのですが、これでは文字化けは解消しませんでした。そこでBLUEPIXYさんのおっしゃるとおりにWin 2kマシンで編集したpetit.cgiをFFFTPで送り、上書きしてやると正しく動作しました。
別の質問になってしまいますが、どなたか、これの理由を教えてくださいませんでしょうか。

お礼日時:2004/12/02 12:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!