投稿日:2002年09月27日 作成鷹の巣

No.5464 Apacheはいけません(涙)



Apacheはいけません(涙)

No.5464 投稿時間:2002年09月27日(Fri) 15:51 投稿者名:リカ URL:

以前ここでお世話になって、AN HTTPdやArGoで見事サーバーが立ったのですが、CGIの事情によりLinuxをつかうハメになりました。
が、このApacheがいけません。あれこれ調べてやってみたのですが、どうしてもCGIを動かすとInternalServerErrorになってしまいます。
もし、Linux+ApacheでCGIを動かしてるWebMASTER様がいらっしゃいましたら,設定、もしくは参考HPを教えてくださ~い。


Apacheいいですよ

No.5465 投稿時間:2002年09月27日(Fri) 16:36 投稿者名:OAK URL:

> 以前ここでお世話になって、AN HTTPdやArGoで見事サーバーが立ったのですが、CGIの事情によりLinuxをつかうハメになりました。
> が、このApacheがいけません。あれこれ調べてやってみたのですが、どうしてもCGIを動かすとInternalServerErrorになってしまいます。
> もし、Linux+ApacheでCGIを動かしてるWebMASTER様がいらっしゃいましたら,設定、もしくは参考HPを教えてくださ~い。

標準設定なら /cgi-bin/ にCGIをいれます。たぶんやってますね。
/usr/local/apache/cgi-bin/ か /home/httpd/cgi-bin/ でしょう。

InternalServerError は実行エラーです。

CGIのあるディレクトリーに移動し
(1)perl -c XXXXX.cgi
でエラーが出ないか見る。
(2)./XXXX.cgi
を実行する。たぶんエラーが出るのでないかな。

アパッチのマニュアル関係 http://japache.infoscience.co.jp/
.htaccess の参考書 http://www.mikeneko.ne.jp/~lab/web/htaccess/

好きな位置にCGIを置くには .htaccess で指定するのが一般的


OAKさん、回答ありがとうございます。(^^)

No.5469 投稿時間:2002年09月27日(Fri) 17:07 投稿者名:リカ URL:

OAKさん、回答いただきありがとうございます。早速やってみましたが、こんな結果になりました。
[root@garden cgi-bin]# perl -c test.cgi
Bareword found where operator expected at test.cgi line 12, near "/bin:/bin"
(Missing operator before bin?)
Bareword found where operator expected at test.cgi line 12, near "/usr/bin"
(Missing operator before bin?)
Bareword found where operator expected at test.cgi line 12, near "/usr/ucb"
(Missing operator before ucb?)
Bareword found where operator expected at test.cgi line 12, near "/usr/sbin"
(Missing operator before bin?)
Bareword found where operator expected at test.cgi line 12, near "/usr/lib"
(Missing operator before lib?)
Bareword found where operator expected at test.cgi line 12, near "/lib:/usr"
(Missing operator before usr?)
Bareword found where operator expected at test.cgi line 19, near "echo '<td><str
ong>' $1 '</strong"
(Might be a runaway multi-line // string starting on line 12)
(Do you need to predeclare echo?)
syntax error at test.cgi line 10, near "set -f"
Unrecognized character \x82 at test.cgi line 19.
これはどう判断するのでしょうか?


追伸

No.5466 投稿時間:2002年09月27日(Fri) 16:40 投稿者名:リカ URL:

環境ですが、RedHat7.3,Apache1.3.22,設定はconfファイルの中をみたら目眩がしてきたので、
webminというツール(http://www.webmin.com)+OSの設定ウインドウのみで行ってます。
とりあえずvar/www/cgi-binのスクリプトが動けばいいのですが、test.cgi(http://nonki.net/technical/cgi/etc/001/)を実行しても
InternalServerErrorになります。パーミッションはちゃんと755になってます。
(うまく動いてる環境がわかればそれに切り替えるので、vineでもkondaraでもなんでもいいです。)


たぶん改行コードが CRLFになっているのでないかな

No.5468 投稿時間:2002年09月27日(Fri) 17:06 投稿者名:OAK URL:

/bin/sh
で書かれているなら perl -c はいりません (2)のみやってください

たぶん改行コードが CRLFになっているのでないかな?
DOSファイルをバイナリ-で送るとそうなります。
UNIX関連は LF(0A)です CR(0d)があるとエラーします。


(2)の件ですが・・

No.5471 投稿時間:2002年09月27日(Fri) 17:20 投稿者名:リカ URL:

(2)の件ですが、こういう事でしょうか?(なんかちがうような気が・・)
[root@garden cgi-bin]# ./test.cgi
: bad interpreter: No such file or directory


本来は HTML の文章が出なければいけない。

No.5473 投稿時間:2002年09月27日(Fri) 17:41 投稿者名:OAK URL:

> (2)の件ですが、こういう事でしょうか?(なんかちがうような気が・・)
> [root@garden cgi-bin]# ./test.cgi
> : bad interpreter: No such file or directory

そうですよ。本来は HTML の文章が出なければいけない。
改行に 0d が入っていると /bin/sh\r というプログラムを探しに行きます。
ユニックスでは\r が付いていてもファイル名として有効です。
所がそんなプログラムないですから(コピーして作れば出来ますが)
No such file になる訳です。

#!/bin/sh など先頭行は実行するプログラム名です。これはDOSには
無いので戸惑うかもしれませんが、これでユニックスは自由にCGIなどで
使うプログラムを指定できます。
スクリプトはWindowsでは .bat のバッチしか使えないので不便なのです


改行コード?

No.5470 投稿時間:2002年09月27日(Fri) 17:08 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/

> 環境ですが、RedHat7.3,Apache1.3.22,設定はconfファイルの中をみたら目眩がしてきたので、
> webminというツール(http://www.webmin.com)+OSの設定ウインドウのみで行ってます。
> とりあえずvar/www/cgi-binのスクリプトが動けばいいのですが、test.cgi(http://nonki.net/technical/cgi/etc/001/)を実行しても
> InternalServerErrorになります。パーミッションはちゃんと755になってます。

おやじがLinuxで失敗した例ですが、Linuxの改行コードは、「LF」です。Windowsは「CR」+「LF」。
間違えると、InternalServerErrorになります。どこからか持ってきたCGIなら動かないはずはないので、
これが一番あやしいと思いますが。FTPクライアントでの転送はASCⅡモードで転送しましたでしょうか?
あるいはエディタで編集したとき、改行コードが変わってませんでしょうか。もし可能性が考えられるなら、
持ってきたままの状態でASCⅡモードで転送してみてはどうでしょうか?


改行コードはいやです

No.5472 投稿時間:2002年09月27日(Fri) 17:24 投稿者名:OAK URL:

また何故か重なりましたね。勝った。

昔から不思議なのですが何で改行はマシンにより違うのでしょうね
ユニックス関係は 0A で MAC は 0d でMSDOS は 0d0a ですね。
私がはじめてマルチタスクを覚えたOS-9(マックではない)
では 0d です。
ただOS-9は パーミッションが逆で、一番下が オーナー、
真中がグループ(これは一緒)左がアザ-になっていてユニックスで
最初逆にセットしたりしてました。

本当は 0d が理想ですね。ユニックスだとコンソールから
入った0d を termios で 0a に変換していて、ソフト組んでて
キーボードから0d を入れたい場合苦労します。

DOS系が2文字なので一番変ですね。だからオープンで
バイナリ-モードとテキストモードの2つを使い分けなきゃいけない。
始めDOSを組んだときあそこがどうも理解できなくて困りました。


おやじさん、回答ありがとうございます(^.^)

No.5474 投稿時間:2002年09月27日(Fri) 17:50 投稿者名:リカ URL:

おやじさん、回答ありがとうございます。やっぱりこのサイトはリカの頼みの綱です
ただ、おやじさん、気を失わないように聞いていただきたいのですが・・
リカはFTPを使わず、なんと!フロッピーで転送(?)しています(ぴゅ~、温度が5度下がる)
というのも、FTPクライアントでupできる場所は/home/userですよね?この場所のファイルを/var/www/cgi-binにコピーして
有効になるのか、わかんなかったので、rootでログインしてフロッピーからもってこればまちがいないんじゃ?と思ったからです。
/home/userにupしたファイルをどうやって/var/www/cgi-binにもってこればいいのでしょうか?


すみません、まずはFTPから・・

No.5476 投稿時間:2002年09月27日(Fri) 18:41 投稿者名:リカ URL:

OAKさん、おやじさん回答ありがとうございます。
しかしリカはそれ以前のところでつまずいています.
FTPクライアントでupできる場所は/home/user以下のディレクトリですよね?
ここにupしたtest.cgiを/var/www/cgi-binにコピーした時、
1)所有者をuser→root
2)パーミッションを755に変更
この2点以外にすることはあるのでしょうか?


他の方法もありますが、これはこれで間違いではありません。

No.5484 投稿時間:2002年09月27日(Fri) 22:45 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/

> OAKさん、おやじさん回答ありがとうございます。
> しかしリカはそれ以前のところでつまずいています.
> FTPクライアントでupできる場所は/home/user以下のディレクトリですよね?
> ここにupしたtest.cgiを/var/www/cgi-binにコピーした時、
> 1)所有者をuser→root
> 2)パーミッションを755に変更
> この2点以外にすることはあるのでしょうか?

この方法なら、これで大丈夫です。


転送モードについて

No.5477 投稿時間:2002年09月27日(Fri) 19:12 投稿者名:リカ URL:

つかってるFTPクライアントはFFFTPなんですが、コントロールパネルの転送モードにはアスキー、バイナリ-、自動切換の3つがあります。
いつも自動切換にしているのですが、これではいけないのででしょうか?ちなみにアスキーモードで転送するファイルの拡張子に、
cgiとplは指定してあります。


間違いありません。

No.5485 投稿時間:2002年09月27日(Fri) 22:47 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/

> つかってるFTPクライアントはFFFTPなんですが、コントロールパネルの転送モードにはアスキー、バイナリ-、自動切換の3つがあります。
> いつも自動切換にしているのですが、これではいけないのででしょうか?ちなみにアスキーモードで転送するファイルの拡張子に、
> cgiとplは指定してあります。

デフォルトのままで大丈夫です。(html,htmも入っていますよね)


感激!ありがとうございました。

No.5478 投稿時間:2002年09月27日(Fri) 20:03 投稿者名:リカ URL:

OAKさん、おやじさん、お二人のおっしゃるとおり、cgiファイルの改行コードをLFに変更したら、動きました!感激です。
ありがとうございました~(^o^)/


良かったですね。

No.5486 投稿時間:2002年09月27日(Fri) 22:53 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/

> OAKさん、おやじさん、お二人のおっしゃるとおり、cgiファイルの改行コードをLFに変更したら、動きました!感激です。
> ありがとうございました~(^o^)/

取り敢えず、おめでとうございます。早く目的を達成できるといいですね。
カキコしている最中に電話を2本していたので? OAKさんにタッチの差で負けて
しまいましたが。でも、よくかぶりますね~???


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