- ベストアンサー
cgiの設定方法
はじめまして、自宅でサーバーを立てようとしているのですが、つまずいてしまったので力を貸してください。 環境はRedhat9.0(?)、apache2.054を使用しています。 cgi自体はネットから落としてきた物を手始めとして使用してます。 /var/www/にcgi-binを作成、そこにcgiファイル等を格納しています。 cgi、perlファイルは705 ログファイルは606 ロックファイルは707にパーミッションを設定しています。 httpd.confは ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" AddHandler cgi-script .cgi .perl <Directory "/var/www/cgi-bin"> allowoverride none options execcgi order allow,deny allow from all </directry> 上記のように設定しています。 HPを表示させようとすると 「InternalError」と表示され、先に進みません。 このサイトを検索し、アスキーモードで転送も行って見たのですが。。。 どなたかCGI設定方法をご教授お願いいたします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
>which perlの結果 >/usr/bin/perl から >.cgiの1行目 >#!/var/www/cgi-bin を #! /usr/bin/perl に変えたらどうですか? >perlのパスが違うことが問題なのですか?? おそらく、そうです。 お書きに指定では、perlのスクリプトが動作しません。
その他の回答 (7)
- eiseima
- ベストアンサー率0% (0/2)
httpd.confも記述を追加されて、/var/www/html以下に test.cgiをの拡張子をちゃんとcgiにしてますか? /var/www/html以下であれば全てcgiが動く設定になってます。cgiのソースが表示されるのであれば、perlを確認してみてください。 rpm -qa |grep perl
補足
ありがとうございます 端末不具合のためサーバー機プラウザからindexファイルにアクセスしていたのですが、それが原因だったようです。 クライアント側からアクセスすると 「TEST」と問題なく表示されました。 ですので、使用しようとしていたcgiファイルに原因があったようです。 cgiファイルの中身等検証していきたいと思います。 >rpm -qa |grep perl を確認してください 確認しましたが、perlから始まるものが多数表示されました。この結果から何がわかるのですか??
- eiseima
- ベストアンサー率0% (0/2)
設定の記述を見る限り問題はなさそうですね。 一度、下記のように設定してみて、簡単なCGIを作り 動作するか確認してみては如何でしょうか? #ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" # #<Directory "/var/www/cgi-bin"> # AllowOverride None # Options None # Order allow,deny # Allow from all #</Directory> <Directory "/var/www/html"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> -------------------------------------------- 【テストCGI】 #!/usr/bin/perl print "Content-type: text/html\; charset=shift_jis\n\n"; print "TEST PAGE\n"; exit;
補足
確認してみました。 プラウザ上から確認したところ プラウザのフレーム内に 「#!/usr/bin/perl print "Content-type: text/html\; charset=shift_jis\n\n"; print "TEST PAGE\n"; exit; 」 と表示されるようになりました。 ログ自体は出力されていません。 本来ならフレーム内に 「TEST PAGE」 と表示されるべきなんでしょうか?
- eiseima
- ベストアンサー率0% (0/2)
的外れでしたら申し訳ございません。 FTPはvsftpdでしょうか?vsftpdの場合、vsftpd.confファイルを編集し、アスキーモードをコメントアウトしないとアスキーモードでの転送は出来ません。 /etc/vsftpd/vsftpd.conf #ascii_upload_enable=YES #ascii_download_enable=YES ↓ ascii_upload_enable=YES ascii_download_enable=YES もし、設定してあるので有ればすみません。
補足
回答ありがとうございました。 FTPはvsftpdを使用しています。 >/etc/vsftpd/vsftpd.conf >#ascii_upload_enable=YES >#ascii_download_enable=YES >↓ >ascii_upload_enable=YES >ascii_download_enable=YES 上記は設定済みです。 なにかほかに考えられることはありますでしょうか。
- Lean
- ベストアンサー率72% (435/603)
No.3で -------8<-------8<-------8<-------8<-------8<-------8<------- >(2)No such file or directory: exec of '/var/www/cgi-bin/memo.cgi' failed, referer: http://192.168.11.2 「No such file or directory」とあるように「/var/www/cgi-bin/memo.cgi」のファイルが存在しないとApacheが言っていますが。 -------8<-------8<-------8<-------8<-------8<-------8<------- と書きましたが、これについては撤回します。 ちょっと勘違いしてました。 cgiファイルの先頭行は、No.2で書いたように「#! /usr/bin/perl」になってますか? 「#! /usr/bin/perl」の後ろに何か制御文字(^Mとか)入っていませんか? もし、入っているようならお書きになったエラーになります。 nkfコマンドがインストールされているなら、 # cd /var/www/cgi-bin # mv memo.cgi memo.cgi.org # nkf -Lu memo.cgi.org > memo.cgi # chmod 705 memo.cgi を実行してから、再度ブラウザから確認してみてください。 ※RedHat9用nkfパッケージは、参照URLの所にあります。 インストールCD内にもたぶん存在していると思います。
補足
ご返事遅くなりました。 No.2の[#! /usr/bin/perel]は設定済みです。 >nkfコマンドがインストールされているなら、 結果をプラウザから確認しましたところエラー表示自体は変わりなかったのですが、エラーログに変化が現れましたので下記に記します。 [Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] Premature end of script headers: memo.cgi, referer: http://192.168.11.2/ [Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] Scalar found where operator expected at /var/www/cgi-bin/memo.cgi line 351, near ""!$B%Q%9%o!<%I$K8m$j$,$"$j", referer: http://192.168.11.2/ [Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] !(Missing operator before $j?), referer: http://192.168.11.2/ [Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] Scalar found where operator expected at /var/www/cgi-bin/memo.cgi line 351, near "$j$^", referer: http://192.168.11.2/ [Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] !(Missing operator before $^?), referer: http://192.168.11.2/ [Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] Scalar found where operator expected at /var/www/cgi-bin/memo.cgi line 351, near "$^$9", referer: http://192.168.11.2/ [Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] !(Missing operator before $9?), referer: http://192.168.11.2/ [Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] Final $ should be \$ or $name at /var/www/cgi-bin/memo.cgi line 351, within string, referer: http://192.168.11.2/ [Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] syntax error at /var/www/cgi-bin/memo.cgi line 351, near "print "!$B%Q%9%o!<%I$K8m$j$,$"", referer: http://192.168.11.2/ [Mon May 30 23:07:51 2005] [error] [client 192.168.11.3] Execution of /var/www/cgi-bin/memo.cgi aborted due to compilation errors., referer: http://192.168.11.2/ 少し長いですが、上記のエラーを眺めるとどうもおおもとのcgiファイル自体が問題である気が起こってきました。ファイル自体はあるサイトから落としてきたので問題はないと踏んでいたのですが、なにかほかの簡単なcgiファイルを作成してTESTしてみようと思います。 もし上記エラーからなにか読み取ることができましたら御教授お願いいたします。
- Lean
- ベストアンサー率72% (435/603)
>cgiファイルを >/var/www/cgi-bin/に格納し、 念のため確認ですが、そのCGIファイルは、memo.cgiであっているのですよね? ><IFRAME src="../cgi-bin/memo.cgi" これを <IFRAME src="/cgi-bin/memo.cgi" に変えたらどうなりますか?
補足
>念のため確認ですが、そのCGIファイルは、memo.cgiであっているのですよね? 確認しましたが問題ありませんでした。 ><IFRAME src="/cgi-bin/memo.cgi" に変えたらどうなりますか? 変更し、キャッシュ、クッキー削除後アクセスしましたが現象変わらずでした。 エラーログもANo4のものと同じでした。 cgiファイル自体がおかしいんですかね??
- Lean
- ベストアンサー率72% (435/603)
>(2)No such file or directory: exec of '/var/www/cgi-bin/memo.cgi' failed, referer: http://192.168.11.2 「No such file or directory」とあるように「/var/www/cgi-bin/memo.cgi」のファイルが存在しないとApacheが言っていますが。 その/var/www/cgi-binディレクトリ配下に置いたCGIファイルとURLで指定(たぶんhttp://192.168.11.2/cgi-bin/memo.cgiかな?)したCGIファイルと一致してますか?
補足
>その/var/www/cgi-binディレクトリ配下に置いたCGIファイルとURLで指定(たぶんhttp://192.168.11.2/cgi-bin/memo.cgiかな?) >したCGIファイルと一致してますか? パスの設定が違うということですか? cgiファイルを /var/www/cgi-bin/に格納し、 /var/www/html/index.htmlよりcgiファイルを呼び出しています。そのときのソースは <IFRAME src="../cgi-bin/memo.cgi" にしています。 これが違うということですか?
- Lean
- ベストアンサー率72% (435/603)
Apacheのエラーログにはどのようなエラーメッセージが出力されていますか? ※エラーログファイルは、httpd.confファイル内でErrorLogで指定されているものです。 ちなみに、.cgiファイルの1行目にあるperlコマンドのパスと「which perl」を実行して表示された結果と比べて同じになっていますか?
補足
ありがとうございます。 errorlogのは以下のようになっています。 [Thu May 19 21:10:10 2005] [notice] Apache/2.0.53 (Unix) configured -- resuming normal operations which perlの結果 /usr/bin/perl .cgiの1行目 #!/var/www/cgi-bin になります。 perlのパスが違うことが問題なのですか?? お願いいたします。
補足
>>.cgiの1行目 >>#!/var/www/cgi-bin >を >#! /usr/bin/perl >に変えたらどうですか? 変更しましたがまだ、同様のエラーで不可能でした。 エラーログを確認したところエラーが表示されていました。 [Mon May 23 20:33:54 2005] [notice] SIGHUP received. Attempting to restart [Mon May 23 20:33:54 2005] [notice] Apache/2.0.53 (Unix) configured -- resuming normal operations [Mon May 23 20:34:15 2005] [error] [client 192.168.11.3] (2)No such file or directory: exec of '/var/www/cgi-bin/memo.cgi' failed, referer: http://192.168.11.2 [Mon May 23 20:34:15 2005] [error] [client 192.168.11.3] Premature end of script headers: memo.cgi, referer: http://192.168.11.2 [Mon May 23 22:57:08 2005] [error] [client 192.168.11.3] (2)No such file or directory: exec of '/var/www/cgi-bin/memo.cgi' failed, referer: http://192.168.11.2 [Mon May 23 22:57:08 2005] [error] [client 192.168.11.3] Premature end of script headers: memo.cgi, referer: http://192.168.11.2 [Mon May 23 22:57:24 2005] [error] [client 192.168.11.3] (2)No such file or directory: exec of '/var/www/cgi-bin/memo.cgi' failed, referer: http://192.168.11.2 [Mon May 23 22:57:24 2005] [error] [client 192.168.11.3] Premature end of script headers: memo.cgi, referer: http://192.168.11.2 上記、apache再起動かけてから[.cgi]の一行目を #! /usr/bin/perl #! /var/www/cgi-bin #! /usr/local/bin/perl5 と3パターン変更して作業した結果です。 3パターンともエラーの記述が同じため内容自体に不具合があるのではと考えているのですが、何かエラーからわかることはありますか。 お願いいたします。