• ベストアンサー

windowsでperl

perlに関する知識に乏しい者ですが質問です。 windowsserver2008にactiveperl5.8.9をインストールしました。 とあるperlプログラムをcgiで動かそうと、apacheもインストールしました。 ですが、サーバーにアクセスするとそのperlプログラム中のgetpwnamという 関数?が実装されていないとエラーがはかれていました。 getpwnamをググってみたのですが、 この関数はwindowsでは実装されてないようです。 なんとかgetpwnamのエラーを解決できないでしょうか? PPMで、必要なモジュールをインストールすれば解決できるレベルであれば、 どれをインストールすればよいのか教えていただけると幸いです。

  • Perl
  • 回答数2
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

使用目的が分かりませんが、私は cygwinを使っています。 UNIX互換環境を作るために、パーテーションを一つ用意して、そのルートにCygwinを入れています。  apacheは、そのドライブの/usr/local/apache に、perlは /usr/local/bin/perl にと・・cygwinのperlには、getpwnamがあるはずですが、CPANから入れることもできるかな??  Pathを付加するためのハック ( http://film.rlss.okayama-u.ac.jp/~kgk/nnml+/index_old03.html )のサイトの、「Pathを付加するためのハック」のあたりに、activePerlからの利用方法がありそうな気がする。

ratsbane
質問者

お礼

このサイトにあることを実際に試してみました。 ですが、私のやり方が悪いのか、やはりgetpwnamでエラーとなりました。 今はcygwinを入れました。 まだいろいろと行き詰ってますが・・ ありがとうございます。

その他の回答 (1)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 その関数はWindows+ActivePerlじゃ使えないYO!  getpwnamはPOSIX互換システム上でパスワードファイルから情報を取得するもので、そもそもパスワードファイルの仕組みが備わってないWindowsで使えるはずがないなり。  ところでWindows Server 2008にはSUA(Subsystem for Unix-based Applications)なる機能が標準で備わっており、そいつをインストールすると一応パスワードファイルの仕組みをWindowsで使う事はできるのだが、Win32(or Win64)サブシステム上で動作しているActivePerlからPOSIXサブシステムにはアクセスできないため、Win32Apache+ActivePerlでは動作しないだろう。SUA上で動作するApacheとPerlを導入してそちらで動作させるとひょっとしたらうまくいくかも知れない。この場合、バージョンは知らないがSUAにはPerlは最初から入っているので用意するのはApacheだけで良い。  分かりやすく回答すると、あきらめてLinux辺り使うか、どうしてもWindows Server 2008上で動作させたければgetpwnamの部分をWindowsのADから情報とってくるように改造するかSUAを試してみるしかないね。

ratsbane
質問者

お礼

perlプログラムのgetpwnamの部分を強引に変更してみました。 そうすると動いたのですが、 別の個所で引っかかります。 このperlはどこかのサイトからダウンロードしたもので、 これまでレンタルサーバー上のcgi-binに配置して動かしてました。 それを自社サーバーのwindowsで動かそうとしていました。 レンタルサーバーはlinuxだったためかperlが問題なく動いておりましたが、 自社サーバーでは同じようには動かなくて質問いたしました。 アドバイスありがとうございました。

関連するQ&A

  • Perlはそのまま使えますか?

    Perlが使用可能なレンタルサーバを借りて CGI練習しようと思っています 自宅PCでテストする場合は ActivePerlとApacheをインストールして使いますが サーバの場合はこの準備ができるのでしょうか? テキストエディタでアップすればプログラムが間違っていなければ ソフトインストールは不必要なのか知りたいです 試してみるのも手ですが変なことすると サーバにとってよくないと本に書いてあるので一応質問します

    • ベストアンサー
    • Perl
  • perlでpostgresを使えるようにしたい

    今までwindows2000でperl5.6とpostgresでDBIの構築をしていました。 昨今のセキュリティ事情を鑑みて、windowsXPにOSを入れなおし、Perlも5.10.0.1005にし、posgresも8.4.0にしようと思い立ちました。 perlはActivePerlです。 ActivePerlもpostgresもインストールしました。 ネットで検索したところ両者をつなぐにはDBIのモジュールが必要だとありました。 (2000の時は会社の人からファイルをもらってコピーしたので何も考えなくてもできました。その人とも疎遠になってしまって質問もできない状態です) モジュールを入れようと、binフォルダにあるppmをコマンドプロンプトから叩くと、エラーが出ます。 ppm gui failed: DBI connect('dbname=C:\DOCUME~1\ランカ~1\LOCALS~1\APPLIC~1/ActiveState/ActivePerl//ppm-MSWin32-x86-multi-thread-5_8.db','',...) failed: unable to open database file というエラーです。 すでにどこから手をつけていいのか、何をまずすべきかがわからなくなってしまいました。 ご教授いただければ幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • Perlのモジュールをインストール後、Apacheの再起動は必要かどうか

    ブラウザに出力させるPerlのプログラム(cgi)を書いています。 Perlのモジュールが足りないため、 cpanでインストールをしました。 特に、Apacheを再起動させないで、 ブラウザにメッセージが出力されました。 通常、ApacheでPerlを使う場合、足りないモジュールを インストールした後はApacheの再起動をするべきなのでしょうか? 再起動する・しないの理由が知りたいです。

    • ベストアンサー
    • Perl
  • PerlモジュールのApache-Responseについて

    Active Perl 5.8でモジュールをインストールしようとしましたが、 ppm install Apache-Response CPANサイトで検索しても Apache::Responseというズバリのものはありませんでした。 どこで手に入れることができるのでしょうか? できれば簡単にインストールしたいです。

    • ベストアンサー
    • Perl
  • perlパス

    Windows2000機でWebServerを建てたのですが、CGIが認識しません。 WEBサーバーのクライアントソフトはApacheで 普通にHTMLは見れています。 perlをインストールした場所は C:\usr\local で VerはActivePerl 5.8.8.822 for Windows (x86)です。 場所は↑なのでCGIファイルのperlのパスはそのままいじらず、 perlのパスは#!/usr/local/bin/perl です。 一応#!C:/~以下   もやりましたがだめで、 CGIのテキストが表示されています。 色々調べてやったのですがどうもうまくいかず 教えていただけませんか

  • 1行目、Perlの宣言

    ActivePerlをC:\Perlにインストールしました。するとperl.exeはC:\Perl\bin\perlにありました。 そこでCGIファイルの1行目に   #! C:/Perl/bin/perl としましたが、実行してみるとコードがそのまま表示されてしまいます。 「Perl」と大文字を含むからかと「P」を小文字に変えてみたり、あるいは「/」を「\」にしてみたりと試しましたが、やはり機能しません。 httpd.confは教科書に書いてある通りに書き換えました。 何が原因でCGIがまともに動かないのでしょう。 OSはWindows Vista、Apacheは2.0.54、ActivePerlは5.8.7.813です。

    • ベストアンサー
    • CGI
  • Perl Package ManagerでCAPNモジュールをインストールしたい

    こんにちは。 PPM(Perl Package Manager)について教えていただきたくて質問をしました。 よろしくおねがいします。 CPANモジュールをインストールしたくて、 スタートメニューからPPMを起動しました。 バージョンは、以下のとおりです。 ActivePerl 5.10.0.1003 PPM 4.02 PPMはモジュール一覧を表示するのですが、 インストールしたモジュールが一覧に見つかりません。 いまインストールしたいのは、 IO::Tee IO::Scalar です。 よく見ると、PPM下部のStatus欄に、以下のようなメッセージが出ていました。 Synchronizing Database ... Downloading ActiveState Package Repository packlist ... failed 500 Can't connect to ppm4.activestate.com:80 (connect: timeout) Synchronizing Database done ためしに、http://ppm4.activestate.com/に直接アクセスすると、ちゃんとアクセスできます・・・。 PPMに何か設定が必要なのでしょうか・・・。 このようなエラーを見たことがある方がいらっしゃったら、 どうやって解決されたのか教えて欲しいです。 よろしくおねがいします。

  • perlの処理を遅くしたい

    CGI初心者です。わかる方教えてください。 少々古いですがactiveperl apache1.3.12を利用してperlプログラムを自宅のみで使うCGIプログラムをWINDOWS上で起動しています。 処理が長くまた同時に複数の処理をperlで処理します。ブラウザ送信ボタンよりCGIを実行してperl.exeを合計5つぐらい同時に起動します。 タスクマネージャーのプロセスの優先度の設定は実行当初「普通」になっていますが,これを実行当初から「低」にしたいと思っていますが やり方がよくわかりません。CGIの書き方,apacheの設定,ショートカットの書き方でできるんではないかと思っていますが,ご存じの方教えてください。OSはWINXPです。宜しくお願いします。

  • perl構文チェックOKなのにCGIが作動しない

    自分のパソコンでサーバーを(apache)を置いて、perlでCGIの勉強を始めたのですか、perlは -cw でOKが出ても、CGIを動かすと、サーバーエラーが出ます。どういった原因が考えられ、どう対処すればいいのか教えてください。htmlへのprint関数は表示されるのですが、time が出来ません。カウンターや掲示板も試すのですが、すべてエラーが出ます。また、一度出来た、入力文章を受けとるCGIもエラーがでます。perl初心者なのでいろいろ教えてくださるとうれしいです。

  • Perl DBD::Mysql

    はじめて質問いたします。 現在MovableType導入しようとしています。 ですが、ActivePerlとMYSQLを接続させる為のDBD::Mysqlが インストールができません。どなたか詳細な方法を 教えてください。 ActivePerl:5.10 windows XP Apache 2.0.63 DBIはインストールできています。 コマンドプロンプトで ppm-shell install DBD-mysql 上記を試すと下記のエラーがでます。 ppm 4.02Copyright (C) 2007 ActiveState Software Inc. Allrights reserved. ppm> install DBD-mysql Downloading ActiveState Package Repository packlist...not modified ppm install failed: Can't find any package that provides DBD-mysql Perl package managerで確認すると DBD::Mysqlはありませんでした。 よろしくお願いします。

専門家に質問してみよう