投稿日:2002年10月24日 作成鷹の巣

No.6005 CGIのディレクトリを変更するとInternal Server Errorになった。



CGIのディレクトリを変更するとInternal Server Errorになった。

No.6005 投稿時間:2002年10月24日(Thu) 23:35 投稿者名:リカ URL:

このサイトには大変お世話になってます。m(_ _)m
会社でおじさんに頼まれて、にわかにサーバー管理人となったのですが、問題がおきました。
新たにあるCGIをいくつか動かす事になり、今まで動いていたCGIと名前が似てて紛らわしいので
古いほうのCGIの名前を変える必要がでてきました。
(/var/www/cgi-bin/x/x.cgi→/var/www/cgi-bin/y/y.cgiとします。OSはLinuxです)
CGIスクリプトの中のxというところをyに変えればいいんでしょ?と思って、やってみたのですが Internal Server Errorになります。
短いスクリプトなのでx→yの置換ミスはありません。このCGIがデータを読みにいくフォルダ名もちゃんと変更してあります。
(/var/www/data/x/x.txt→/var/www/data/y/y.txt)
また、パーミッション、所有者、改行コードともぬかりはありません。なのに、う・ご・き・ま・せ・ん(怒)
なにがいけないのでしょうか?ご指導よろしくお願いします。


mvコマンド使用なら問題なし。あと何か有ったきもするな・・・

No.6007 投稿時間:2002年10月25日(Fri) 00:01 投稿者名:ryujin URL:http://www.ryujin.info/

リカさん、頑張ってる!
> (/var/www/cgi-bin/x/x.cgi→/var/www/cgi-bin/y/y.cgiとします。OSはLinuxです)
xディレクトリーをyディレクトリーに変更
コマンドならmv x y かな
取り合えず、これだけで動く気がする。戻り先などでページが在りませんと成るでしょうから
> CGIスクリプトの中のxというところをyに変えればいいんでしょ?
戻り先やTOPの変更が必要でしょうから。
> と思って、やってみたのですがInternal Server Errorになります。
> 短いスクリプトなのでx→yの置換ミスはありません。このCGIがデータを読みにいくフォルダ名もちゃんと変更してあります。(/var/www/data/x/x.txt→/var/www/data/y/y.txt)
> また、パーミッション、所有者、改行コードともぬかりはありません。
リネーム(mvコマンド)だけならここらへんは何もしなくても良いような
> なのに、う・ご・き・ま・せ・ん(怒)

Internal Server Errorは、実行出来ないと言っている事が多いから
・パーミッションの実行属性の「X」が無いなどで
・あと何か有ったきもするな・・・
以上、あやふやな記憶です。


telnetでつなげて確認したのですが、実行権はありました。

No.6008 投稿時間:2002年10月25日(Fri) 00:36 投稿者名:リカ URL:

ryujin さん、回答ありがとうございます。
今、telnetでつなげて確認したのですが、実行権はありました。
(rwxr-xr-x)正常に動いている方と同じ状態です。
原因を特定するのに必要なデータがありましたら調べますので
おっしゃってください。よろしくお願いします。


Apacheのエラーログを見れるのなら見てください。

No.6011 投稿時間:2002年10月25日(Fri) 01:20 投稿者名:水芹 URL:

もし、Apacheのエラーログを見れるのなら見てください。
エラーの原因が書いてあるかもしれません。

また、コマンドラインから、
$ perl -wc xxx.cgi
とすると、スクリプトの文法チェックが出来ます。


Can't locate ./jcode.plで、syntax OKでした。

No.6013 投稿時間:2002年10月25日(Fri) 02:47 投稿者名:リカ URL:

水芹さん、回答ありがとうございます。
ご指摘のあったapacheのエラーログですが、以下のがそうです。
Can't locate ./jcode.pl at /var/www/cgi-bin/y/y1.cgi line 13.
[Fri Oct 25 01:49:53 2002] [error] [client x.x.x.x]
Premature end of script headers: /var/www/cgi-bin/y/y1.cgi

また文法の方はこんな結果になりました。
[root@pc y]# perl -wc y1.cgi
Name "main::KEYS2" used only once: possible typo at y1.cgi line 75.
Name "main::KEYS3" used only once: possible typo at y1.cgi line 76.
Name "main::KEYS4" used only once: possible typo at y1.cgi line 77.
Name "main::name2" used only once: possible typo at y1.cgi line 50.
Name "main::value2" used only once: possible typo at y1.cgi line 51.
Name "main::QUERY2" used only once: possible typo at y1.cgi line 52.
Name "main::TOP" used only once: possible typo at y1.cgi line 26.
y1.cgi syntax OK

これらはどう解釈すればいいのでしょうか?


XからYディレクトリへの変更の程度は?

No.6012 投稿時間:2002年10月25日(Fri) 01:27 投稿者名:ryujin URL:http://www.ryujin.info/

はじめに、internal server errorは単純な誤りや見落としが多いという事です
(私も多々やりました、覚えていない・・・)、取り合えず気の付いた列挙
一つ一つ見直しましょう。それでは
1.XからYディレクトリへの変更は
・mvコマンドですか?
そうだとすると、単純に
・YからXへ戻したら動きますか?
2.cgiの変更はx→yは検索置換の一括置換はしてませんね
戻り先をエディターで替えた程度ですよね
3.FTPでの転送を行なっているならASCIIで転送している
バイナリで転送していませんね
4.error.logのエラーログ内容を確認してみてください。
どんなエラーかな


グノームのデスクトップ環境でコマンドはほぼ使いません。

No.6014 投稿時間:2002年10月25日(Fri) 03:25 投稿者名:リカ URL:

ryujin さん、回答ありがとうございます。
会社のサーバーはモニターとキーボード&マウスがついてて、
グノームのデスクトップ環境というフレンドリー(?)な仕様なので、
コマンドはほぼ使いません。私がやった事は

1.cgi-binの下にyのディレクトリをつくり、その中に
xのディレクトリの中にあったcgiをコピー&ースト
2.yのcgiを編集(x→y)
3.index.htmlからのリンクをxからyへ変更 という感じで、
ftpでの転送は行ってません。

apacheのエラーログはこんなのがありました。
Can't locate ./jcode.pl at /var/www/cgi-bin/y/y1.cgi line 13.
[Fri Oct 25 01:49:53 2002] [error] [client x.x.x.x]
Premature end of script headers: /var/www/cgi-bin/y/y1.cgi

これは13行目になにか問題があるって事ですよね?


ryujin さん、水芹さん、お騒がせしました。m(_ _)m jcode.plがyの中に入っていませんでした。

No.6015 投稿時間:2002年10月25日(Fri) 06:48 投稿者名:リカ URL:

ryujin さん、水芹さん、お二人の"エラーログをみたら?"の
アドバイスで Can't locate ./jcode.pl~を見て、一眠りしたら、
もしや・・・と悪い予感がしてきました。しかしそれは的中しました・・すみません、jcode.plがyの中に入っていませんでした。
失礼しました~。コピーしたら、動きました。
今度から必ずログをみるようにします。ありがとうございました。


|目次|掲示板|過去ログ目次|▲頁先頭|