C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: perl cgiを実行できない


(過去ログ 111 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■66090 / inTopicNo.1)  perl cgiを実行できない
  
□投稿者/ 裕猫 (48回)-(2013/04/01(Mon) 11:17:15)

分類:[その他の言語] 

いつもお世話になっています。
Apache 2.2.22
ActivPerl 5.14.2.1402
でサーバーを作っているのですが、CGIをブラウザから実行できません。
ホームページは表示されます。 ACtivPerlも動いています。
cgi-binフォルダの中のtest.plを直接ダブルクリックすると実行されて表示されます。
ブラウザからxxx.jp/cgi-bin/test.plと打ち込むと
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, nekono_kyoufu@yahoo.co.jp and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
と表示されます。
 httpd.confの設定が悪くてcgiを見つけられないのではないかと思うのですが、どこが悪いのか見当がつきません。調べた限りのことは全部修正したはずなのですが.....。
 httpd.confの中で書き換えたのは

DocumentRoot D:/HomePage --------←ここのD:/HomePageだけ書き換え

<Directory D:/HomePage> --------←ここのD:/HomePageだけ書き換え
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<IfModule alias_module>
    ScriptAlias /cgi-bin/ "D:/HomePage/cgi-bin/" --------←ここの"D:/HomePage/cgi-bin/"だけ書き換え
</IfModule>

<Directory "D:/HomePage/cgi-bin"> --------←ここの"D:/HomePage/cgi-bin"書き換え
    AllowOverride None
    Options +ExecCGI ---------← +ExecCGIに書き換え
    AllowOverride None ---------←追加
    Order allow,deny
    Allow from all
</Directory>

<IfModule mime_module>
    TypesConfig conf/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddHandler cgi-script .cgi .pl ---------← .pl追加
</IfModule>

以上です
他に何か足りないところあるでしょうか?気がついたところがあったら教えてください。
よろしくお願いいたします。

引用返信 編集キー/
■66091 / inTopicNo.2)  Re[1]: perl cgiを実行できない
□投稿者/ 774RR (70回)-(2013/04/01(Mon) 12:23:10)
ホストOSは何?

仮に UN*X 系マシンであるとして
> cgi-binフォルダの中のtest.plを直接ダブルクリックすると実行されて表示されます。
ということは「権限設定が誤り」である可能性が高い。

ユーザ johndoe の権限で test.pl を実行できるということと
ユーザ www (Apache httpd の実行者) が test.pl を実行できるということとは違う。
CGI 実行ファイルのオーナ設定と、権限設定が誤っていると
・そもそも cgi として実行できない だけでなくて
・セキュリティホール にもなりうる
のでその辺は要注意だ。
# 実用に供する cgi ファイルが一般ユーザで実行できるのはダメ設定。

error_log に何か残ってないの?
今残っていないのであれば LogLevel の変更をしてみるといい。

# httpd.conf を修正して apachectl graceful してないとかいうオチ?
# Apache httpd は 2.2.24 が出てる
引用返信 編集キー/
■66092 / inTopicNo.3)  Re[2]: perl cgiを実行できない
□投稿者/ 裕猫 (49回)-(2013/04/01(Mon) 13:00:59)
2013/04/01(Mon) 14:24:57 編集(投稿者)
2013/04/01(Mon) 14:24:38 編集(投稿者)

No66091 (774RR さん) に返信
> ホストOSは何?
返信ありがとうございます。OSはWindowsXP Pro SP3です.

> 仮に UN*X 系マシンであるとして
>>cgi-binフォルダの中のtest.plを直接ダブルクリックすると実行されて表示されます。
> ということは「権限設定が誤り」である可能性が高い。
>
> ユーザ johndoe の権限で test.pl を実行できるということと
> ユーザ www (Apache httpd の実行者) が test.pl を実行できるということとは違う。
> CGI 実行ファイルのオーナ設定と、権限設定が誤っていると
> ・そもそも cgi として実行できない だけでなくて
> ・セキュリティホール にもなりうる
> のでその辺は要注意だ。
> # 実用に供する cgi ファイルが一般ユーザで実行できるのはダメ設定。
>
> error_log に何か残ってないの?
> 今残っていないのであれば LogLevel の変更をしてみるといい。
>
> # httpd.conf を修正して apachectl graceful してないとかいうオチ?
> # Apache httpd は 2.2.24 が出てる

権限設定など調べてみます。ありがとうございました。
error_logの内容は
[Mon Apr 01 13:18:22 2013] [error] [client 210.251.60.211] D:/HomePage/cgi-bin/test.pl is not executable; ensure interpreted scripts have "#!" or "'!" first line
[Mon Apr 01 13:18:22 2013] [error] [client 210.251.60.211] (9)Bad file descriptor: don't know how to spawn child process: D:/HomePage/cgi-bin/test.pl
の2つが記録されていました。
引用返信 編集キー/
■66093 / inTopicNo.4)  Re[3]: perl cgiを実行できない
□投稿者/ 774RR (71回)-(2013/04/01(Mon) 14:41:48)
> D:/HomePage/cgi-bin/test.pl is not executable;
文字通り test.pl は実行できないということだ。

> don't know how to spawn child process: D:/HomePage/cgi-bin/test.pl
httpd が test.pl を実行しようとしていることは証明されたわけで、原因は httpd.conf ではなさそう。
なぜ実行できないか、までは httpd 側の責任ではないので error_log にそれ以上の詳細は出力されない。

・権限設定が違う (test.pl の)
・オーナが違う (test.pl の)
・ ditto (test.pl が使おうとしている perl の)
・ ditto (test.pl を起動する shell の)
・ chroot の関係で見つからない
などなど、原因はいくつも考えられる。

test.pl て shellscript として起動できる形式にしてある?
perl test.pl として起動しないと使えない形式だと CGI に使えないよ。
shellscript 形式にしておけ、と error_log にも書いてあるよね。
引用返信 編集キー/
■66094 / inTopicNo.5)  Re[3]: perl cgiを実行できない
□投稿者/ BBQ (3回)-(2013/04/01(Mon) 16:24:52)
> error_logの内容は
> [Mon Apr 01 13:18:22 2013] [error] [client 210.251.60.211] D:/HomePage/cgi-bin/test.pl is not executable; ensure interpreted scripts have "#!" or "'!" first line
> [Mon Apr 01 13:18:22 2013] [error] [client 210.251.60.211] (9)Bad file descriptor: don't know how to spawn child process: D:/HomePage/cgi-bin/test.pl

このエラーの通り、test.plの最初の行に#!等で始まる記述がないのではないですか?
私がperlを使っている環境はUNIXなので参考になるのかどうか分かりませんが、CGIファイルの第一行目には必ず

#!/usr/bin/perl

のように、perlエンジンのある場所を記述します。
(この前にコメントや空欄が含まれることは許されません。)
引用返信 編集キー/
■66095 / inTopicNo.6)  Re[4]: perl cgiを実行できない
□投稿者/ 裕猫 (50回)-(2013/04/01(Mon) 17:46:29)
No66094 (BBQ さん) に返信
(774RR さん) に返信
> このエラーの通り、test.plの最初の行に#!等で始まる記述がないのではないですか?
> 私がperlを使っている環境はUNIXなので参考になるのかどうか分かりませんが、CGIファイルの第一行目には必ず
>
> #!/usr/bin/perl
>
> のように、perlエンジンのある場所を記述します。
> (この前にコメントや空欄が含まれることは許されません。)

お二人ともありがとうございます。ご指摘の通り#!/usr/bin/perl が抜けていたのと、ここのパスが違っていたのが原因でした。パスが一致したら動き出しました。
またパスの指定も勘違いがありまして、perlエンジンのある場所ではなくperlのインストールフォルダまでしか指定されていませんでした。お二人のアドバイスで無事実行できるようになりました。ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -