Re: cgiの実行について
( No.1 )
|
 |
- 日時: 2006/10/09 23:47
- 名前: おじゃま虫
-
Options ExecCGI
↓ Options Includes ExecCGI FollowSymLinks (書き換える)
#AddHandler cgi-script .cgi ↓ AddHandler cgi-script .cgi .pl (#をはずす)
.pl はcgiとは関係ないけど追加しておく。
|
Re: cgiの実行について
( No.2 )
|
 |
- 日時: 2006/10/10 00:33
- 名前: two
- 参照: http://www.two-wonderland.net/
-
お世話になっております、twoです。
> alias /cgi-bin/ "/home/*/public_html/cgi-bin/"
上記の部分ですが、ScriptAliasで指定してみてはいかがでしょうか?
ScriptAlias /cgi-bin/ "/home/*/public_html/cgi-bin/"
また、[/home/*/public_html/cgi-bin/]配下の各種CGIプログラムのパーミッションも正しく設定されいるか確認してみて下さい。 以上、宜しくお願い致します。
|
Re: cgiの実行について
( No.3 )
|
 |
- 日時: 2006/10/10 07:11
- 名前: 智樹
-
おじゃま虫、two様お世話になります。
ご指摘頂きました箇所を修正させていただきました。
AddHandler cgi-script .cgi .plの部分をコメントアウトすると、cgiの中身が表示され、コメントアウトしないとInternal Server Errorになります。 パーミッションの設定ですが、cgi-binディレクトリおよびtest用cgi(Helloと単に表示するcgi)705にしてあります。755にしても現象は変わりませんでした。
何か他にも設定が必要なのでしょうか?
本当に申し訳ございませんがどうぞ宜しくお願いいたします。
|
Re: cgiの実行について
( No.4 )
|
 |
- 日時: 2006/10/10 07:28
- 名前: 管理者
-
智樹さん、こんにちは。
> AddHandler cgi-script .cgi .plの部分をコメントアウトすると、cgiの中身が表示され、コメントアウトしないとInternal Server Errorになります。 おじゃま虫さんも書かれていますが、コメントアウトではありません。「#」を取って有効にしてください。 現段階では「Internal Server Error」とでる方が正解です。
次に確認する事は、CGIスクリプトのファイル自体の文字コードと、システムの文字コードは一致していますか?
以下をご参照下さい。 http://kajuhome.com/cgi-bin/patio/patio.cgi?mode=view&no=813 「 No.3 」
|
Re: cgiの実行について
( No.5 )
|
 |
- 日時: 2006/10/10 18:51
- 名前: 智樹
-
管理人様ありがとうございます。
AddHandler cgi-script .cgi .plの#はとりました。 以下のcgiをWindows上のサクラエディタで作成し、UTF-8,改行コード(LF)で保存しアップしましたが、 Internal Server Errorになります。cgiファイルのパーミッションは、念のため755にしてあります。 また、ユーザのホーム、その下のpublic_htmlフォルダ、cgi-binフォルダとも755にしてあります。 ----------------------------------------------------------------------------------- #!/usr/bin/perl (Perlのパスは,whichコマンドで確認) print "Content-type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<META http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-JP\">"; print "<title>テストページ</title>\n"; print "</head>\n"; print "<body>\n"; print "CGI表示テスト\n"; print "</body>\n"; print "</html>\n"; ----------------------------------------------------------------------------------
そのcgiを実行したときのログですが、以下のメッセージが表示されました。 --------------------------------------------------------------------------------------- [error client xxx.xxx.xxx.xxx](8)Exec Format Error:exec of '/home/userA/public_html/cgi-bin/test.cgi' faild error client xxx.xxx.xxx.xxx](8)Premeture end of script 'test.cgi' ----------------------------------------------------------------------------------------
たびたび、申し訳ございませんがどうぞ宜しくお願いいたします。
|
Re: cgiの実行について
( No.6 )
|
 |
- 日時: 2006/10/10 19:02
- 名前: 管理者
-
> 以下のcgiをWindows上のサクラエディタで作成し、UTF-8,改行コード(LF)で保存しアップしましたが、
> Internal Server Errorになります。cgiファイルのパーミッションは、念のため755にしてあります。 アップロードは、取り合えずバイナリモードで行われましたか?
上記以外の確認で、コマンドラインより以下を実行してみて下さい。
# /usr/bin/perl /home/userA/public_html/cgi-bin/test.cgi
上記での出力はどの様になりますか?
ちなみに、UTF-8で作成した「test.cgi」であれば以下を変更してください。
print "<META http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-JP\">"; ↓ print "<META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">";
|
Re: cgiの実行について
( No.7 )
|
 |
- 日時: 2006/10/10 20:29
- 名前: 智樹
-
管理人様ありがとうございます。
>アップロードは、取り合えずバイナリモードで行われましたか?
はい。FFFTPのデフォルト設定で,拡張子にcgiがつくものは、自動でバイナリーモードに切り替えてアップするようになっていましたが、自動切換モードではなく、バイナリモードを選択してサーバーにアップしました。 (METAタグのcharsetは、サーバーにあわせてUTF-8に変更しました。)
1.# /usr/bin/perl /home/userA/public_html/cgi-bin/test.cgiを実行すると、cgiファイルの中身が表示され、cgiは実行されませんでした。(test.cgiのパーミッション755)
2.http://xxx.xxx.xxx.xxx/~userA/cgi-bin/test.cgiを実行すると、cgiは実行されます。
3.また、hello.cgiというcgiファイルを作成して、http://xxx.xxx.xxx.xxx/~userA/cgi-bin/hello.cgiを実行してみましたところ、Internal Server Errorになりました。 しかし、# /usr/bin/perl /home/userA/public_html/cgi-bin/hello.cgiを実行すると、cgiは実行されます。 (hello.cgiのパーミッション755) ------------------------- #!/usr/bin/perl print "Hello World"; -------------------------
たびたび、申し訳ありませんがどうぞ宜しくお願いいたします。
|
Re: cgiの実行について
( No.8 )
|
 |
- 日時: 2006/10/10 21:07
- 名前: 管理者
-
> 1.# /usr/bin/perl /home/userA/public_html/cgi-bin/test.cgiを実行すると、cgiファイルの中身が表示され、cgiは実行されませんでした。(test.cgiのパーミッション755)
「ファイルの中身が表示され・・・」は以下の様に表示されましたか?
# /usr/bin/perl /home/userA/public_html/cgi-bin/test.cgi Content-type: text/html
<html> <head> <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"><title>テストページ</title> </head> <body> CGI表示テスト </body> </html>
上記であれば問題ありません。
ちなみに以下の結果を教えてください。
# kcc -c /home/userA/public_html/cgi-bin/test.cgi
> 2.http://xxx.xxx.xxx.xxx/~userA/cgi-bin/test.cgiを実行すると、cgiは実行されます。 上記は実行されるが「Internal Server Error」となってしまう。で宜しいのですよね?
> 3.また、hello.cgiというcgiファイルを作成して、http://xxx.xxx.xxx.xxx/~userA/cgi-bin/hello.cgiを実行してみましたところ、Internal Server Errorになりました。 > しかし、# /usr/bin/perl /home/userA/public_html/cgi-bin/hello.cgiを実行すると、cgiは実行されます。 > (hello.cgiのパーミッション755) > ------------------------- > #!/usr/bin/perl > print "Hello World"; > -------------------------
上記のスクリプトでWebブラウズしても、ブラウザが「Content-type」を認識できないのでエラーとなります。
---------- @以下の結果を教えてください。
# cat -v /home/userA/public_html/cgi-bin/test.cgi
A「/etc/httpd/conf/httpd.conf」のユーザ公開ディレクティブ部分(以下の部分) <IfModule mod_userdir.c> : </IfModule>
<Directory /home/*/public_html> : </Directory>
B「/etc/httpd/conf/httpd.conf」内の以下の部分 AddType text/html ・・・・ AddHandler cgi-script ・・・・
|
Re: cgiの実行について
( No.9 )
|
 |
- 日時: 2006/10/10 21:40
- 名前: 智樹
-
管理人様ありがとうごいざます。
test.cgiは、ブラウザのアドレス欄にアドレスを入力すると、cgiは実行され、きちんと表示されます。 しかし、# /usr/bin/perlで実行するとcgiファイルの中身が表示されます。 hello.cgiは、その逆で、、# /usr/bin/perlで実行すると、cgiは実行されます。しかし、ブラウザのアドレス欄にアドレスを入れると、internal Server Errorになります。
@ ------------------------------------------------------------------------------------------- #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"; print "<title>M-cM-^CM-^FM-cM-^BM-9M-cM-^CM-^HM-cM-^CM-^ZM-cM-^CM-<M-cM-^BM-8</title>\n"; print "</head>\n"; print "<body>\n"; --------------------------------------------------------------------------------------------
A ------------------------------------------------------------------------- <IfModule mod_userdir.c> #UserDir disable UserDir public_html </IfModule> ----------------------------------------------------------------------
B ---------------------------------------------------------------------- AddHandler cgi-script .cgi .pl #AddHandler send-as-is asis ddHandler imap-file map AddHandler type-map var AddType text/html .shtml AddOutputFilter INCLUDES .shtml ------------------------------------------------------------------------
申し訳ありませんが宜しくお願いいたします。
|
Re: cgiの実行について
( No.10 )
|
 |
- 日時: 2006/10/10 21:58
- 名前: 管理者
-
> test.cgiは、ブラウザのアドレス欄にアドレスを入力すると、cgiは実行され、きちんと表示されます。
> しかし、# /usr/bin/perlで実行するとcgiファイルの中身が表示されます。 > hello.cgiは、その逆で、、# /usr/bin/perlで実行すると、cgiは実行されます。しかし、ブラウザのアドレス欄にアドレスを入れると、internal Server Errorになります。 と言う事は、「test.cgi」はOKと言うことで良いと思います。
> しかし、# /usr/bin/perlで実行するとcgiファイルの中身が表示されます。 先程の当方のレスで記述しましたが、ファイルの中身(print文)が表示されるのが正解です。
「hello.cgi」も前述しましたが、「Content-type」を認識できないのが理由です。 ------ hello.cgi ------ #!/usr/bin/perl print "Hello World"; -----------------------
上記をブラウザで表示させたければ、「Content-type」を最初に出力してください。(以下の様に・・)
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html>\n"; print "<body>\n"; print "Hello World"; print "</body>\n"; print "</html>\n";
|
Re: cgiの実行について
( No.11 )
|
 |
- 日時: 2006/10/10 22:24
- 名前: 智樹
-
管理人様、おじゃま虫、two様、ありがとうございました。
Hello.cgiは、Content-typeをセットして、動作いたしました。
また、インターネットよりダウンロードしたカウンターも、Internal Server Errorになっていましたが、 こちらは、cgiファイルが、S-JISでサーバにアップロードされていたためでした。
ご迷惑をおかけして申し訳ありませんでした。 本当に助かりました。
|