BBS過去ログ |
| ■目次 |
はじめまして。
いつも参考にさせていただいております。
こちらのサイトを参考に、FedoraCORE2にて
Apacheを立ち上げました。
KENTWEBからカウンタとして、dayx.zip、
掲示板として、aska.zipをダウンロードし、
それぞれを解凍して設置したのですが、
ShiftJISのままでは動作しなかったので、
すべてのファイルをUTF-8に変換し、改行コードもCR+LFからLFに変更したところ、dayxカウンタは動作しました。
しかし、掲示板の方は、「500 Internal ServerError」が表示されます。
前置が長くなりましたが、質問というのは、
1.FedoraCORE2でCGIを設置する場合は、シフトJISで動作させることは可能なのか?
という点です。
この掲示板の文字コードを参照させてもらった所、シフトJISで動作しているようなので、ご質問させていただきました。
私としては、既存の資源を生かすということで、CGIをシフトJISで
動作させたいと思っております。
(UTF-8で掲示板を作成すると既存のCGIに手を加えなければならないようなので・・・・)
なお、/etc/sysconfig/i18nは、UTF-8のまま、
/etc/httpd/conf/httpd.confの
AddDefaultCharset UTF-8も有効のままです。
以上、何かご存知でしたらよろしくお願いします。
/etc/httpd/conf/httpd.confのAddDefaultCharset UTF-8の行は先頭に#を入れて無効化しましたでしょうか?
> /etc/httpd/conf/httpd.confのAddDefaultCharset UTF-8の行は先頭に#を入れて無効化しましたでしょうか?
管理人様。返信ありがとうございます。
AddDefaultCharset UTF-8を無効化し、
# service httpd restart
を実行し
httpdを再起動してみましたが、
やはり、シフトJISのままではCGIは動作しないようです。
他に考えられる設定はありますでしょうか・・・?
以上、質問ばかりで恐縮ですがお願い致します。
> シフトJISのままではCGIは動作しないようです。
Shift_JIS またはEUC-JPで作動するようです。
Unicode(UTF-8)はまだ、コード変換プログラムJcode.plが対応していないのではないでしょうか。
> 他に考えられる設定はありますでしょうか・・・?
文字コードをShift_JISまたはEUC-JPにする。(デフォルトではShiht_JIS)
改行コードをLEにする。
# which perl を実行し、そのパスにaska.cgiの先頭行のパスを合わせる。
http://fedorasrv.com/apache.shtml の記述に従って、
# ln -s /usr/bin/perl /usr/local/bin/perl を行っていない場合は、
aska.cgiの先頭行を#!/usr/bin/perlに変更する必要があります。
askaディレクトリ内で #mkdir locl を実行し、lockファイルを作成する。
パーミッションを
aska.cgi [705]
askalog.cgi [606]
jcode.pl [604]
lock [707]
にする。
/aska は ExecCGIが有効か?
などです。
初心者(特にCGIは)おじんです。
先日Webmaster様の絶大なるサポートを戴きCGIが動作するようになりました。
その時S-JISのCGI(YYBBS)をサーバに持ってくる時トラブッたのは自動転送設定の見落としでした。
めんどくさいけど一つ一つASCIIを確認しながら持ってけば動きました。同じ系統のBBSなので如何でしょうか?
初心者の横槍恐縮ですがご参考まで。
> AddDefaultCharset UTF-8を無効化し、
>
> # service httpd restart
>
> を実行し
> httpdを再起動してみましたが、
> やはり、シフトJISのままではCGIは動作しないようです。
そんなことはないですよ。シフトJISでもEUCでもUTF-8でも動作します。
>
> 他に考えられる設定はありますでしょうか・・・?
> 以上、質問ばかりで恐縮ですがお願い致します。
CGIがinternal server errorで動作しない原因は非常に多岐にわたるため、ひとつずつ確認していく必要がありますので、まず、以下をお試しください。
・Webサーバー構築(Apache)http://fedorasrv.com/apache.shtml、■Webサーバー確認
の(2)CGI確認にあるような簡単なCGIをWindows上(シフトJIS)で作成し、Webサーバのドキュメントルート(デフォルトのままであれば/var/www/html)へアスキーモード(バイナリモードでアップロードすると動作しません。FFFTP等、だいたいのFTPクライアントは拡張子がcgiの場合は自動でアスキモードでアップロードするようになってますが)でアップロード後、http://サーバIPアドレス/test.cgiにアクセスしてCGIが動作するか確認してみてください。その際、CGIのパーミッションは755でダメなら700にしてみてください。
あと、CGIエラー時の/var/log/httpd/error_logを貼り付けて頂けますでしょうか?
皆様レスありがとうございます。
> ・Webサーバー構築(Apache)http://fedorasrv.com/apache.shtml、■Webサーバー確認
> の(2)CGI確認にあるような簡単なCGIをWindows上(シフトJIS)で作成し、Webサーバのドキュメントルート(デフォルトのままであれば/var/www/html)へアスキーモード(バイナリモードでアップロードすると動作しません。FFFTP等、だいたいのFTPクライアントは拡張子がcgiの場合は自動でアスキモードでアップロードするようになってますが)でアップロード後、http://サーバIPアドレス/test.cgiにアクセスしてCGIが動作するか確認してみてください。その際、CGIのパーミッションは755でダメなら700にしてみてください。
例を参考にtest.cgi(UTF-8)、test2.cgi(ShiftJIS)という名前のファイルを作成し、/var/www/cgi-binに、
(私はcgi-bin配下でcgiを動作させるようにしております)
配置し実行してみた所、test.cgiでは正常に実行され、test2.cgiでは
InternalServerErrorが出ます。
パーミッションは755、700両方試してみました。
> あと、CGIエラー時の/var/log/httpd/error_logを貼り付けて頂けますでしょうか?
test2.cgi実行時の/var/log/httpd/error_logの内容は以下の通りです。
[Wed Jun 23 10:12:18 2004] [error] [client 192.168.0.102] mod_mime_magic: can't read `/var/www/cgi-bin/test2.cgi'
[Wed Jun 23 10:12:18 2004] [error] [client 192.168.0.102] (13)Permission denied: exec of '/var/www/cgi-bin/test2.cgi' failed
[Wed Jun 23 10:12:18 2004] [error] [client 192.168.0.102] Premature end of script headers: test2.cgi
念のためhttpd.conf内の/var/www/htmlと/var/www/cgi-binのディレクティブの内容も以下に示しておきます。
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory "/var/www/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
以上です。
test2.cgiですが、改行コードをLFに変換してみたところ、
動作しました。
無知で申し訳ないのですが、改行コードをLFに変換してUPするのが
標準的な使い方なのでしょうか・・・?
当方でもtappe様と同じことをやってみました。
@システムの文字コードはUTF-8
[root@fedora1 root]# cat /etc/sysconfig/i18n
LANG="ja_JP.UTF-8"
SUPPORTED="ja_JP.UTF-8:ja_JP:ja"
SYSFONT="latarcyrheb-sun16"
AApacheのデフォルト文字コードはオフ
[root@fedora1 root]# grep "AddDefaultCharset" /etc/httpd/conf/httpd.conf
#AddDefaultCharset UTF-8
BCGIの設置ディレクトリは/var/www/cgi-bin
[root@fedora1 root]# ll /var/www/cgi-bin/
┯
-rwxr-xr-x 1 root root 230 羃3 10:48 test.cgi
-rwxr-xr-x 1 root root 224 羃3 10:47 test2.cgi
Cperlのパス
[root@fedora1 root]# which perl
/usr/local/bin/perl
Dtest.cgiはUTF-8で作成
[root@fedora1 root]# kcc -c /var/www/cgi-bin/test.cgi
/var/www/cgi-bin/test.cgi: data
Etest2.cgiはシフトJISで作成
[root@fedora1 root]# kcc -c /var/www/cgi-bin/test2.cgi
/var/www/cgi-bin/test2.cgi: shift-JIS
Ftest.cgi、test2.cgiはともに以下の内容
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>テスト</title>\n";
print "</head>\n";
print "<body>\n";
print "CGIテスト\n";
print "</body>\n";
print "</html>\n";
Gパーミッションは両方とも755
上記環境でhttp://サーバIPアドレス/cgi-bin/test.cgiはUTF-8で、http://サーバIPアドレス/cgi-bin/test2.cgiはシフトJISで日本語が文字化けせずに表示されました。
やってることは合ってますでしょうか?
> やってることは合ってますでしょうか?
はい。当方の環境と同じです。
前レスにても述べましたが、test2.cgiも改行コードをLFに変換した
ところ動作致しました。
同様の方法で、aska.cgiの改行コードをLFに変換したところShiftJISのままでも動作しました。
改行コードの変換はサポーターさんがおっしゃられていた事ですね。
ヒントありがとうございました。
ですが、これは標準的な使い方なのでしょうか・・・?
プロバイダのCGIの場合、改行コードを変換せずに、FFFTPでUPすれば
動作していたのですが・・・。
FFFTPがUTF-8に対応していないことも関係しているのでしょうか・・?
無変換でUPする分には問題ないと思っているのですが・・・。
> > やってることは合ってますでしょうか?
>
> はい。当方の環境と同じです。
> 前レスにても述べましたが、test2.cgiも改行コードをLFに変換した
> ところ動作致しました。
うーん、なんででしょう?当方の環境では既存のCGIになにも手をいれずにwinからサーバへ転送(ちなみにFTPではなく、winscpです)しただけで動作したんですけど・・・。
> ですが、これは標準的な使い方なのでしょうか・・・?
> プロバイダのCGIの場合、改行コードを変換せずに、FFFTPでUPすれば
> 動作していたのですが・・・。
だと思います。なにもせずに動作するのが標準だと思いますけど。
改行コードの変換なんてサーバ側のスキルがあるひとじゃないとわかりませんもんね。
>
> FFFTPがUTF-8に対応していないことも関係しているのでしょうか・・?
> 無変換でUPする分には問題ないと思っているのですが・・・。
私も問題ないと思います。なんででしょう?
すみません、結局、わからない、わからないだけのレスになってしまいました。
当方も将来を考え、サーバ側をUTF-8化し、クライアント資産はそのままという条件でのサーバ構築を行っていきたいと思います。
> すみません、結局、わからない、わからないだけのレスになってしまいました。
> 当方も将来を考え、サーバ側をUTF-8化し、クライアント資産はそのままという条件でのサーバ構築を行っていきたいと思います。
いえいえ、当初の目的であった、ShiftJISでCGIを動かすという事は達成できたので十分です。
ありがとうございました。
改行コードに関しては引き続き調査して、もしわかれば報告したいと思います。