- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ブラウザ上からなら実行可能なスクリプトがコマンドラインだと実行しません)
ブラウザ上から実行可能なスクリプトがコマンドラインだと実行できない問題について
このQ&Aのポイント
- ブラウザ上で実行可能なスクリプトをコマンドラインで実行すると、Can't locate IO/Socket.pm のエラーが発生します。
- pathの設定や絶対パスを指定してもエラーの解消には至りません。
- 解決方法を教えていただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず path は関係ないし, 実は「何が悪いのか」はメッセージの中に書いてあるんだけど.... メッセージはちゃんと読んで理解してください. その perl はどのようにインストールしたのですか? 「ブラウザ上から実行する」とは, 具体的にはどのように「実行する」のですか? Webサーバが起動しているなら, それはなんですか? 「ブラウザ上から実行する」ときと「コマンドプロンプトから実行する」ときとで同じ perl が動いていることは確認できていますか?
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
表示は本当に Can't locate IO/Socket.pm だけですか? 他に情報はありませんか?
質問者
補足
回答ありがとうございます! 表示は、 Can't locate IO/Socket.pm in@INC (@INC contains: .) at D:\home\test\public_html\test.pl line 2. BEGIN failed--coompilation aborted at D:\hometest\public_html\test.pl line 2. が全てでした。 よろしくお願い致します。
お礼
perlは一箇所だと思っていたのですが、2箇所に入っていました。 socket.pmの入っているlibと同じ階層のbin内のperl.exeで起動する事で解決しました。 違うほうのperl.exeを動かしていたのでsocket.pmは読めていませんでした。 cgiにした時はc:\usr\bin\perl.exeで起動、 コマンドプロンプトからはc:\usr\local\bin\perl.exeで起動、 という違いがありました。 気付かせて頂き、ありがとうございました。 助かりました。
補足
早速の回答ありがとうございます。 原因が書いてあるのですね… 2行目の"use IO::Socket;"が見つけられないと言っているのだと思い込んでいました。 perlはperl5.6をダウンロードしてきてインストールしました。 ブラウザ上からの実行は、test.plをcgiにして実行しました。 perlはひとつしか入っていないので同じものが動いていると思います。 実はwindowsはテスト環境で、本番はUNIXサーバへ移行します。 今回test.plは、cronで動作させる予定なので、 コマンドプロンプトから動作確認出来ればcronでも大丈夫かな…と思って実験したのですが つまずいてしまいました。