はじめての自宅サーバ構築 - Fedora/CentOS -
Last Update 2018/01/16
[ 更新履歴 ] [ サイト マップ ] [ 質問掲示板 ] [ 雑談掲示板 ] [ リンク ]
トップ >> 当サイト情報 >> スレッド

このページは表示専用です。新規投稿・レスや最新情報はこちらです。

このスレッドはクローズされています。記事の閲覧のみとなります。

 cgiの実行について
日時: 2006/10/09 22:12
名前: 智樹

?不明点・障害内容:作成したHPの動作を確認する為、自宅でサーバーを立てたのですが、
          cgiが動作しません。cgiの内容が表示されるのみで、実行はされません。
?ログの有無   :
  (有:その内容):無
?Distribution  :Fedoracore3
      Version:
?Service Name  :httpd
      Version:Perl

書籍を購入したりHPで調べたのですが、どこの設定が間違っているのかよくわからず困っております。
素人で、大変申し訳ありませんが、ご教授の程宜しくお願いいたします。

(ユーザAの場合)
http://xxx.xxx.xxx.xxx/~userA/cgi-bin/???.cgi

-------------------------
環境:FedoraCore3
Apache 2.0.52.3
Perl 5.8.5(/usr/bin/perl)
-------------------------

---------------------------------------------------
<httpd.conf>
#UserDir disable
UserDir public_html

alias /cgi-bin/ "/home/*/public_html/cgi-bin/"
<Directory "/home/*/public_html/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>

#AddHandler cgi-script .cgi
--------------------------------------------------

■ コンテンツ関連情報

 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

?「/etc/httpd/conf/httpd.conf」のユーザ公開ディレクティブ部分(以下の部分)
<IfModule mod_userdir.c>
    :
</IfModule>

<Directory /home/*/public_html>
    :
</Directory>


?「/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";
--------------------------------------------------------------------------------------------

?
-------------------------------------------------------------------------
<IfModule mod_userdir.c>
  #UserDir disable
  UserDir public_html
</IfModule>
----------------------------------------------------------------------

?
----------------------------------------------------------------------
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でサーバにアップロードされていたためでした。

ご迷惑をおかけして申し訳ありませんでした。
本当に助かりました。

■ その他

ページ先頭へ


Copyright(©)2004-2018 First home server construction. All Right Reserved.