• ベストアンサー

構文チェックについて

#!/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等のコマンドを実行させると実行結果が得られるので、その延長で出来ないかと考えてます。初心者なのですいませんが教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.2

 えとですね(笑)  これは、原因は「$perl = `perl -wc web.cgi`;」の部分です。  この web.cgi の部分は telnet 上では「HP管理者」が実行しますが、Web上では「HP閲覧者」が実行することになります。  つまり、「HP閲覧者が、HTTPサーバーを経由せずにCGIを使う」という、(セキュリティ的に)通常はやってはいけないことをやってしまうことになるんです。  ブラウザからの閲覧は、基本的にすべてゲストログイン扱いになるので、ブラウザ経由でそういうことするのは難しいかと思います。  かくいう俺も、昔HTTP経由でHPの更新とかできるCGIを作ったことがありましたが、制約が多すぎてやめてしまいました(^_^;

その他の回答 (2)

  • Fooky
  • ベストアンサー率71% (59/82)
回答No.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サーバのエラーログを見たらどうなってるんですか? 何か原因が書いてありません?

  • ayucat
  • ベストアンサー率12% (7/55)
回答No.1

Content-type: text/html を Content-type: text/html; とか?  どんなエラーが出るのか、詳しくエラーを書けば、 もう少し分かるかも?

kasahatahanako
質問者

補足

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

関連するQ&A