はじめての自宅サーバ構築 - Fedora/CentOS -
Last Update 2017/02/18
[ 更新履歴 ] [ サイト マップ ] [ 質問掲示板 ] [ 雑談掲示板 ] [ リンク ]
トップ >> 質問掲示板

 このスレッドはクローズされています。記事の閲覧のみとなります。

 CGIが動かない理由が解らない
日時: 2013/12/15 22:44
名前: yoshida

1.不明点・障害内容:動くCGIと動かないCGIがある
2.ログの有無   :無
  (有:その内容) :
3.Distribution  :Cent
      Version :6.2
4.Service Name  :
      Version :
5.ネットワーク構成:

 お世話になります。さくらインターネットのVPSでホームページを運用しています。
今までは何事もなく動いていたあるCGIが突然動かなくなりました。他のCGIは正常に
動いており、掲示板なども問題なく動作しています。
そこで、こんなCGIをテスト用に書いてみました。

#!/usr/local/bin/perl
print "Content-type: text/html¥n¥n";
print "<HTML>¥n<BODY>¥n<TITLE>CGI Script TEST</TITLE>¥n</BODY>¥n";
print "The CGI script was worked!¥n</HTML>¥n";

これをあちこちのディレクトリに転送して動作を確認しているのですが、
すでに正常動作しているディレクトリに転送しても動作しません。
もちろんperlのパスはあっていますしパーミッションも755にしています。
そのディレクトリに置いている掲示板は正常動作しています。
これまでにもCGIは色々設置した経験があり、いずれも正常動作しています。
なぜなのか、さっぱりわけが解りません。
どなたか、なにか思い当たる理由があれば教えて下さい。

エラーは500 internal server errorです。
メンテ

Page:  [1] [2] [3] [4] [5] [6]

■ コンテンツ関連情報

 Re: CGIが動かない理由が解らない ( No.26 )
日時: 2013/12/17 15:09
名前: アメリカン

vi test.cgi
でファイルを開いてエスケープキーを押して(コマンドモードに)
:set fileformat=unix (Enterキー)

またエスケープキーを押して(コマンドモードに)
:wq (Enterキー)

これで改行が0aだけになると思います。
またダンプして確認してください。
メンテ
 Re: CGIが動かない理由が解らない ( No.27 )
日時: 2013/12/17 18:10
名前: yoshida

[root@hostname JGKxx2r3Wz]# od -tx1 -c test.cgi
0000000  23  21  2f  75  73  72  2f  6c  6f  63  61  6c  2f  62  69  6e
          #   !   /   u   s   r   /   l   o   c   a   l   /   b   i   n
0000020  2f  70  65  72  6c  0a  70  72  69  6e  74  20  22  43  6f  6e
          /   p   e   r   l  ¥n   p   r   i   n   t       "   C   o   n
0000040  74  65  6e  74  2d  74  79  70  65  3a  20  74  65  78  74  2f
          t   e   n   t   -   t   y   p   e   :       t   e   x   t   /
0000060  68  74  6d  6c  5c  6e  5c  6e  22  3b  0a  70  72  69  6e  74
          h   t   m   l   ¥   n   ¥   n   "   ;  ¥n   p   r   i   n   t
0000100  20  22  3c  48  54  4d  4c  3e  5c  6e  3c  54  49  54  4c  45
              "   <   H   T   M   L   >   ¥   n   <   T   I   T   L   E
0000120  3e  43  47  49  20  53  63  72  69  70  74  20  54  45  53  54
          >   C   G   I       S   c   r   i   p   t       T   E   S   T
0000140  3c  2f  54  49  54  4c  45  3e  5c  6e  22  3b  0a  70  72  69
          <   /   T   I   T   L   E   >   ¥   n   "   ;  ¥n   p   r   i
0000160  6e  74  20  22  3c  42  4f  44  59  3e  5c  6e  54  68  65  20
          n   t       "   <   B   O   D   Y   >   ¥   n   T   h   e
0000200  43  47  49  20  73  63  72  69  70  74  20  77  61  73  20  77
          C   G   I       s   c   r   i   p   t       w   a   s       w
0000220  6f  72  6b  65  64  21  5c  6e  3c  2f  42  4f  44  59  3e  5c
          o   r   k   e   d   !   ¥   n   <   /   B   O   D   Y   >   ¥
0000240  6e  3c  2f  48  54  4d  4c  3e  5c  6e  22  3b  0a
          n   <   /   H   T   M   L   >   ¥   n   "   ;  ¥n
0000255

これで動くようになりました。問題のCGIでも同じことを試してみます。
メンテ
 Re: CGIが動かない理由が解らない ( No.28 )
日時: 2013/12/18 10:43
名前: アメリカン

ご存知だと思いますが、Windowsでテキストを普通に作ると改行はCRLFになります。

転送ソフトにもよると思いますが、普通、転送するときにテキストモードで転送すると
CRLFをLFのみに変換してくれます。バイナリーモードで転送するとCRLFのまま
転送されてしまいます。

もちろん、エディターでスクリプトを作るときに、改行をLFのみに設定してあれば
バイナリー転送できます。

追記ですが、Windows機の端末からviで開いてテキストを貼り付けたりすると改行変換されるか
されないか微妙です。
また配布されている掲示板等のスクリプトはサーバー機で展開することも考慮して最初からLFのみに
なっていますから、Windows機で展開してバイナリー転送しても問題ありません。
注意するのは自作のスクリプトや配布スクリプトを改変してセーブするときです。

文字コードも日本語を扱うときには要注意です。システムの文字コード、スクリプト自体の
文字コード、スクリプトが扱うデーターの文字コード、DBならDBが保存する文字コードなど
しっかり把握した上でないと適切なスクリプト等は作れません。
メンテ
 Re: CGIが動かない理由が解らない ( No.29 )
日時: 2013/12/17 15:24
名前: yoshida

アメリカンさん
管理者さん
Johannさん

皆さんありがとうございました。どうして問題のCGIだけCRLFで送られていたのか
解りませんが、注意して進めたいと思います。
メンテ

Page:  [1] [2] [3] [4] [5] [6]

■ その他

ページ先頭へ

Copyright(©)2004-2017 First home server construction. All Right Reserved.