apacheをwindows98 SEにいれて、perlを動かそうとしているのですが、うまく行きません。

成功しているかたがいらっしゃったら、方法を教えてください。
僕が試した詳細は以下の通りです。

1)ファイルをダウンロードし、dllをModuleの下にコピーをし、
C:\Program Files\Apache Group\Apache\modules\ApacheModulePerl.dll
2)httpd.confを
LoadModule perl_module modules/ApacheModulePerl.dll
を追加しました。
3)その後、apache コマンドを打つと、
Syntax error on line 184 of c:program files/apache group/apache/conf/httpd.conf:
Cannot load c:/progrm files/aapche group/apache/modules/ApacheModulePerl.dll nto server:
の様なエラーメッセージが表示されてしまい、起動しません。


#おそらくapacheを再コンパイルする必要があると思うのですが、方法がわかりません。自分でも調べている最中ですが、やられた方がいらっしゃったら教えてください。
以上、御願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

mod_perlとApacheのバージョンが合ってない、ということはありませんか?


Apache 1.3.15以降用のmod_perl binary packageでは、mod_perlのモジュールはUnix風に「mod_perl.so」にRenameされて同梱されてますから、ApacheModulePerl.dllを使う必要はないはずです。

ActivePerlを既にインストールされているのであれば、ppmによるインストール方法が下記URLで解説されてますから、そちらでインストールした方が早いと思いますが。
#ppmの使い方についてはActivePerlのドキュメントを参照して下さい。

参考URL:http://perl.apache.org/distributions.html
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qperlスクリプト s/^\s+//;  s/\s+$//;  return wantarray ? @out : $out[0]; について

自作の掲示板を作ろうと思い、perlの勉強をしている者です。人様の作ったスクリプトを解析しています。以下のスクリプトはライブラリに記述されていたものです。


sub tttt {
my @out = @_;
for (@out) {
s/^\s+//;
s/\s+$//;
}
return wantarray ? @out : $out[0];


このスクリプトなんですが、 s/^\s+//; の部分の「+」と s/\s+$//; の部分の「+$」、 また「return wantarray~」 の三つの部分のスクリプトが、どういった働きをしているの分かりません。専門書やウェブ上のリファレンスも色々調べたのですが・・。

分かる方いらっしゃいましたらご教授下さると幸いです。よろしくお願いします。

Aベストアンサー

まず前2つの「+」は,正規表現における,「直前の表現を一回以上繰り返し」をあらわします.
「\s」は空白文字一文字を表す正規表現ですので,「\s+」は,「一文字以上の空白文字」になります.
次に,最初の「^」と2番目の「$」は,その正規表現がどこに現れるかを示す記号です.それぞれ,先頭と最後尾にあることを示します.
したがって,「^\s+」は,「最初に空白が一文字以上ある文字列」に,
「\s+$」は「行末に空白が一文字以上ある文字列」にヒットします.
置換構文sはご存知なんですかね.すなわち,この2文で,行の最初と最後の空白を消しているんです.

次に, wantarray ですが,
http://www2u.biglobe.ne.jp/~MAS/perl/ref/wantarray.html
によると,このサブルーチンttttを呼び出すときに,何を返り値にしているかで真偽が決まる関数です.
呼び出す時に配列を希望していたら @out 全体を,変数を希望していたら $out[0]だけを返します.

Q#!/usr/local/bin/perl

とPerlのCGIの先頭に書きますが
FedoraCore3でPerlを使うときにはどのように書けばよいのでしょうか?

Aベストアンサー

#!/usr/bin/perl

でしょうか。FedoraCore3は私は使っていませんが、cgiの先頭に書くのは、perlへのパスになるので、もしターミナルが使える状況なら

which perl

で得られるパスを #! につづけて書けばOKです。

QApacheのhttpd.confの設定方法がわかりません

ただいまPHPとPerlを勉強しようと思い、環境設定に取り組んでいます。

PHPの本を買ってきて、その本に付属しているPHPDEV5というPHPとApache2とMySQLの付いているものをインストールしました。PHPの方は何の問題もなく動作しています。

Perlも本を買ってきたんですが、Perlの本の方もサーバとしてApache2を使っているんですが、最初にインストールしたPHPDEV5付属のApache2のhttpd.confファイルの中身が違っていて、Perlの解説本のとおりにhttpd.confファイルを修正できないため、どのように修正すれば、CGIができるようになるのか分かりません。

どなたかもし設定ファイルの方法がわかる方がいましたら、教えてください。よろしくおねがいします。

Aベストアンサー

執筆者は先輩の解説本で学んできた人ばかりなのでしょう。その方法で執筆者自身は納得していたのかもしれません。または技術部分の執筆と翻訳者との感性の差もあります。独学で学習するなら1,2冊の解説本ですべてをマスターすることを考えないことです。立ち読みでも良いです、目的を持って本屋さんに行き、1行のために1冊の参考書を購入するなり、立ち読みでヒントを得るようにしましょう。ISBN-7741-1825-7 Cc3055 \3281Eはあなたの質問部分を的確に解説しています。私もただいまその先を勉強中です。

Qエラーログ「\x8ew\x92\xe8・・・」はどういう意味?

以下のような意味不明のサーバー「エラーログ」が出るのですが、何を意味しているのでしょうか?

スクリプト(フォームの入力値を取得するプログラム)の動作上はなんら問題はないのですが、必ず出るエラーなので、その意味が知りたいのです。

-------------
[Wed --] [error] [client --] \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83p\x83X\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r, referer: http://127.0.0.1/fmail.cgi
[Wed --] [error] [client --] \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83p\x83X\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r, referer: http://127.0.0.1/fmail.cgi
--------------

ActivePerl-5.6.1.638-MSWin32
Apache/2.0.55(Win32)

以下のような意味不明のサーバー「エラーログ」が出るのですが、何を意味しているのでしょうか?

スクリプト(フォームの入力値を取得するプログラム)の動作上はなんら問題はないのですが、必ず出るエラーなので、その意味が知りたいのです。

-------------
[Wed --] [error] [client --] \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83p\x83X\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r, referer: http://127.0.0.1/fmail.cgi
[Wed --] [error] [client --] \x8ew\x92\xe8\x...続きを読む

Aベストアンサー

Shift-JISの生バイト配列が文字になったモノですね。
デコードしてみると、

「指定されたパスが見つかりません」

となりました。
使用しているスクリプト中の、ファイルバスの部分を確認してみてください。
存在しないディレクトリやファイルを指定している部分があるのではないでしょうか。

QperlでWin32::APIを使用してDLLからバイナリデータを得たいのですが、

perlでWin32::APIを使用してDLLからバイナリデータを得たいのですが、
データ途中できれてしまいます。
0x00を含むところで切れているように思えます。
$datの長さを指定する方法とかあるのでしょうか?
どうか助言をお願いします。

$func=new Win32::API("sample.dll","func1",[P,N,P],P);
$size=0;
$dat = $func ->Call("TEST",100,\$size);

open(F,">kekka");
binmode(F);
print F "$dat";
close(F);

Aベストアンサー

Win32::APIを使ってバイト配列のようなデータを取得する場合、
関数の戻り値として得るのではなく
引数に書き込む場所を与えておいて、そこに書き込むという形が
ほとんどだと思うのですが、
なぜ質問の例にあるような手順を取っているのでしょうか?

Win32::APIの本体を見ると、場所をかんちがいしていなければ

case T_POINTER:
ApiFunctionPointer = (ApiPointer *) ApiFunction;
#ifdef WIN32_API_DEBUG
printf("(XS)Win32::API::Call: Calling ApiFunctionPointer()\n");
#endif
pReturn = ApiFunctionPointer();
#ifdef WIN32_API_DEBUG
printf("(XS)Win32::API::Call: ApiFunctionPointer returned 0x%x '%s'\n", pReturn, pReturn);
#endif
/* #### only works with strings... #### */
cReturn = (char *) safemalloc(strlen(pReturn));
strcpy(cReturn, pReturn);

ということをやっているので、
\x00 というデータがあったらそこで切れるのは
当然のように思います。
#Perlでの文字列自体は 、長さを別に管理しているので
#データとして\x00を含めることはできます。

Win32::APIを使ってバイト配列のようなデータを取得する場合、
関数の戻り値として得るのではなく
引数に書き込む場所を与えておいて、そこに書き込むという形が
ほとんどだと思うのですが、
なぜ質問の例にあるような手順を取っているのでしょうか?

Win32::APIの本体を見ると、場所をかんちがいしていなければ

case T_POINTER:
ApiFunctionPointer = (ApiPointer *) ApiFunction;
#ifdef WIN32_API_DEBUG
printf("(XS)Win32::API::Call: Calling ApiFunctionPointer()\n");
#endif...続きを読む


人気Q&Aランキング

おすすめ情報