このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

どうやってもQPQ1.0.2でCGIが動かない、、、、、

発言者:okoby
( Date Wednesday, January 28, 1998 02:26:13 )


ここにかかれているあらゆる方法を使用しても
CGIが動かないんです、、、、、
MacPerlもちゃんとあるし、cgi-lib.pl、jcode.plもあります。
バージョンを上げればいいのでしょうか?
だれか助けてください!

usui , seiichi さんからのコメント
( Wednesday, January 28, 1998 04:06:21 )

この記事からは何が原因か私にはわかりません。
 どんなことを実際に試してみたのか、
 どんな環境でやっているのか、
など自分ならここまで記述されていれば、解決策を提案できるはずだと考え
られるだけの情報を提示していただきたいと私は思います。

#何を書きたかったのかわからなくなってきました、、、
#私の場合は質問されたことをよく読まずに答えてしまうことがあるので
#問題有りなのですが、、、

私の環境ではQPQを再インストールして、
設定をいじくることなくMacPerlのCGIを立ち上げることは出来ます。
サーバーの設定で変更すべき点はないだろうと思います。

CGIを使うためのMacPerlの扱いは、よしもと先生の

MacPerl Island
http://cybaba.kek.jp/~yosimoto/MacPerl/

を参考にしてみると良いと思います。

田中求之 さんからのコメント
( Wednesday, January 28, 1998 10:39:13 )

動かないということは、どこかにエラーメッセージが表示されるなどの、具体的な
症状があるはずです。それを教えてもらえますか?

たとえばブラウザではどのような表示が出るか?
サーバーのログにはどういう記録が残っているのか?

動かないと言ったときに考えられる原因としては、

1:MacPerl のインストールが間違っている
2:CGI のスクリプトのセーブ方法が間違っている
3:スクリプト自体に間違いがある
4:アクセスの方法が間違っている(ブラウザで直接アクセスする等)

といったことが考えられます。どれに当てはまるかによって解決方法が異なります
ので、具体的な情況が分からないことにはアドバイスしようがないのです。

okoby さんからのコメント
( Wednesday, January 28, 1998 14:06:41 )

エラーは次のように出ます。
--

Diagnostic Output


# Bare word found where operator expected, near "'Okoby'sMacHD"
File 'Okoby'カ'sMacHD:Quid Pro Quo ト:cgi-bin:chatf.cgi'; Line 3
#       (Missing operator before sMacHD?)
# syntax error, near "'Okoby'sMacHD"
File 'Okoby'カ'sMacHD:Quid Pro Quo ト:cgi-bin:chatf.cgi'; Line 3
# Unrecognized character \304 ignored.
File 'Okoby'カ'sMacHD:Quid Pro Quo ト:cgi-bin:chatf.cgi'; Line 3
# Bad name after pl::.
File 'Okoby'カ'sMacHD:Quid Pro Quo ト:cgi-bin:chatf.cgi'; Line 3


--

QPQの場所はOkoby'sMacHDにあります。
cgi-lib.pl、jcode.plはcgi-binの中にあります。

たぶん、置く場所が違うのだろうと思いますがどうなのでしょう?

よしもと さんからのコメント
( Wednesday, January 28, 1998 14:50:51 )

せっかくエラーが出ているのですから、それをちゃんと読みましょう。

usui , seiichi さんからのコメント
( Wednesday, January 28, 1998 21:45:39 )

require等をするスクリプトは特に指定がないかぎり、
 CGIスクリプトと同じフォルダーに入れる、
もしくは、
 MacPerlのあるフォルダ中にあるlibフォルダ(デフォルトではここ)
に入れます。


以下、根本的な解決策ではありませんがだらだらと書きます。
#もったいぶってるだけかもしれません
#実は解決策がわかってないだけかも、、、


cgi-lib.pl、jcode.plなどのrequireするものがないときには、
QPQ1.02は次のようなエラー文を吐き出します。

# Can't locate parse_form.pl in @INC.
File 'Macintosh HD:web:Samples:Search.cgi'; Line 6

(この場合はparse_form.plが見つからなかった)
@INCはrequireなどの命令の時に探すスクリプトファイルを探す
ディレクトリ(パス、フォルダー)が入っています。

MacPerlでSyntax Checkをかけると、スクリプトが見つからないときはエラーが出ません。
MacPerlでRun ScriptをしたときにはQPQ1.02に表示されるのと同じエラーが出ます。

QPQ2.1では違った動作をします。(と思います。)


今回の場合はサーバーには問題がない(多分)、MacPerlも問題がない(多分)
アクセス方法にも問題がないと推測されます。
スクリプトを変更するときに、ちょっとしたミスをしたと思います。
#私は複数回エラーが一つの行数で出たときはエラーメッセージを吟味していません。
#ちょっとしたミス一つだけでずらずらとメッセージが出るからです。


私がCGIスクリプトを(とりあえず動けばいいだけの)チェックする時は次のようにしています。

まず、変更する前のスクリプトをMacPerlで文法チェックをかけます。
#Perl Debugger、Taint Checksは使ったことがありません。
文法チェックで問題がなければ(ないはずですが)、

スクリプトの説明書きにしたがって変更を行い、文法チェックをします。
エラーが出たら変更点に問題があります。

そのあとに、Run ScriptでCGIスクリプトではない状態で実行します。
ここでエラーが出たときは、
 requireなどをするスクリプトにエラーがある。
 エラーの出たスクリプトを直します。

 文法エラーではないエラーが存在する。
 MacPerlで実行できない可能性があります。
 自分で解決できない場合はスクリプトのソースを公開するなどして
 他の人の力を借りて解決をします。

CGIスクリプトにしてサーバーにのせ、テストアクセスをします。

こんなところでしょうか。
自分なりのスタイルがあるはずですから、
どんどんスクリプトをためして経験を積んでいって下さい。
#Perl-Pluginも存在しますし、、、
#サンプルスクリプトも(UNIX系が多いですが)多いですし、、

堀内 和幸 さんからのコメント
( Sunday, February 01, 1998 01:31:43 )

初めて発言させて頂きます。どうぞよろしくお願いいたします。
さて、私も自分の所属する研究室のサーバをQPQ1.0.2で動かし
ておりますが、ちょっと気になるエラーメッセージなので、一言。

># Bare word found where operator expected, near "'Okoby'sMacHD"
>File 'Okoby'カ'sMacHD:Quid Pro Quo ト:cgi-bin:chatf.cgi'; Line 3

このエラーが発せられた直接の原因とは関係ないかも知れませんが。。。
ここで、パス名(ボリューム,ディレクトリ,ファイル,)に、クォート
や、半角カタカナ(文字化けの結果と思われる)が幾つか含まれています
が、このようなものは全て取り除いた方が良いと思います。
クォート,ダブルクォートなどの特殊文字は、サーバが解釈しかねません
ので。一度、これで試してみては如何でしょうか?

また、QPQは、QPQ本体が置いてあるディレクトリをルートとして認識しま
すから、上記のようなエラーが出ると云うことは、ボリュームの直下に裸で
QPQを置いているということでしょうか?
その辺を含め、パス情報,(configure serverの)アクションなどの情報を
頂けませんでしょうか?

当研究室では、CGI等も動作しています。
(田中様のBBSも2/4に取り付け予定(動作確認は終了しています)です)



→  芝浦工業大学・材料工学専攻機能材料研究室