最新閲覧日:

#!/usr/local/bin/perl

$perl = `perl -wc web.cgi`;
$perl=~s/[\r\n]/<BR>/g;

print <<"END";
Content-type: text/html

<HTML>
<HEAD><TITLE>PERLCHECK</TITLE></HEAD>
<BODY>
perl<BR>$perl

</BOBY>
</HTML>
END

exit;

と以上のように書いてますが。telnet上ではOKと出ますがブラウザでみるとエラーが出ます。
やりたいことは、Telnetを使っての構文チャックではなく、ブラウザ上で構文のチェックは出来ないか模索しています。上記の`UNIXコマンド`の部分で、freeやdf等のコマンドを実行させると実行結果が得られるので、その延長で出来ないかと考えてます。初心者なのですいませんが教えてください。

A 回答 (3件)

deagleさんが触れられているように、


実効ユーザの違いじゃないですか?

$perl = `df`;

なら正しい結果が得られるんですよね。

それじゃ、$perlの中に書いたものが悪いと
思われますよね。

1.perlのパスが通ってない
  `perl ...`を`/usr/local/bin/perl ...`に
  してみる

2.web.cgiってどこにあるの?
  この書き方だと、telnetでログインした
  ときのホームディレクトリにあるんですか?
  web.cgiをフルパスで指定したらどうですか?

3.パーミッションの問題
  web.cgiをこのCGIの実効ユーザが読めない。
  どういったユーザ名でCGIが実行されてるか、
  設定内容を知りませんが、guestならguestが
  見にいけないような場所にweb.cgiを置いてませんか?
  あるいは、web.cgi自体のパーミッションがきついとか。

HTTPサーバのエラーログを見たらどうなってるんですか?
何か原因が書いてありません?
    • good
    • 0

 えとですね(笑)



 これは、原因は「$perl = `perl -wc web.cgi`;」の部分です。
 この web.cgi の部分は telnet 上では「HP管理者」が実行しますが、Web上では「HP閲覧者」が実行することになります。
 つまり、「HP閲覧者が、HTTPサーバーを経由せずにCGIを使う」という、(セキュリティ的に)通常はやってはいけないことをやってしまうことになるんです。

 ブラウザからの閲覧は、基本的にすべてゲストログイン扱いになるので、ブラウザ経由でそういうことするのは難しいかと思います。
 かくいう俺も、昔HTTP経由でHPの更新とかできるCGIを作ったことがありましたが、制約が多すぎてやめてしまいました(^_^;
    • good
    • 0

Content-type: text/html



Content-type: text/html;
とか?

 どんなエラーが出るのか、詳しくエラーを書けば、
もう少し分かるかも?

この回答への補足

telnet上では、syntax OKと出ます。
ブラウザ上では
http://testsite.helpkeeper.net/users/tajima/inde …
と出ます。
ブラウザで、構文チェックとcgiのプログラムでは不可能なことですか?

補足日時:2001/08/28 15:31
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ