• 締切済み

LWP::Simpleでのgetについて

つい先日ローカルにサーバ環境をインストールし、 色々とプログラムを試しているのですが、 タイトルに記述したLWP::Simpleのgetを使用すると500エラーとなってしまいます 実行内容は下記のような単純なものです use LWP::Simple; $url = "http://localhost/test.cgi";#自動リンク防止に「:」を全角にしてます $html = get($url); print "Content-Type: text/html\n\n"; print $html; ・test.cgi単体では動作しています(単純に文字を出力するのみ) ・$url をローカルでなく外部URL(例 yahoo等)にしてもエラーとなりました ・getを行わなず $html = "a";のように任意文字列にした場合は出力されます ・perl/lib/LWP/ には Simple.pm が入っています ・use 行をevalで囲み $@ を見てみましたがエラーは入っていませんでした ・セキュリティソフトがブロックしている可能性も考え、切ってみましたが駄目でした ・レンタルサーバー上で実行した場合は成功しました($urlを外部URLにて) こちらはApacheやOS側で他に何か設定等が必要なのでしょうか それとも不足しているものがあるのか・・・手詰まり状態です 些細なことで結構ですので、助言いただけると助かります 以上、よろしくお願いします ----------------------------------- Apache/2.2.4 Perl/v5.8.8 WinXP/HE サーバ環境はXAMPP及びXAMPP Add-Onsで一括インストール

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

みんなの回答

  • maura
  • ベストアンサー率46% (48/104)
回答No.2

$Config{'osvers'}が 5になってるのが問題みたいみたいですが 調べてましたが意味がわかりません。 perl/lib/Error.pm 11行目~13行目 "$Config{'archname'}-$Config{'osvers'}" eq "MSWin32-x86-multi-thread-4.0" or die "Errno architecture (MSWin32-x86-multi-thread-4.0) does not match executable architecture ($Config{'archname'}-$Config{'osvers'})"; -- をコメントアウトしてみては?

suzuki-_-
質問者

お礼

まだ知識が浅いので解決に至りそうもなく、 Windowsのシステム上でのちょっとした不具合も出てしまったので、 今回は諦めようと思っています(全てアンインストール予定) ご協力ありがとうございました

suzuki-_-
質問者

補足

ありがとうございます コマンドプロントで perl -V と実行したところ、 仰るように私の環境は osvers=5.0 と表示されました Error.pmがなかったのでErrno.pmのことと解釈し、そちらにある 11~13行目をコメントアウトしてみましたが、実行されずエラーとなりました。。。 削除しても相変わらず同じ構文が出力されます また、ちょっと気になったところでは、 mauraさんの記述では各所が 4.0 となっていますが、 私のほうでは下記のように 5.0 との表記でした // "$Config{'archname'}-$Config{'osvers'}" eq "MSWin32-x86-multi-thread-5.0" or die "Errno architecture (MSWin32-x86-multi-thread-5.0) does not match executable architecture ($Config{'archname'}-$Config{'osvers'})"; // 伺った内容を元に色々と試行錯誤してみたいと思います

  • maura
  • ベストアンサー率46% (48/104)
回答No.1

ソースは、間違い内容ですが、500エラーが出るのが なんなのか。。 1行 use CGI::Carp qw(fatalsToBrowser); を加えて実行してみると如何でしょうか? ヒントとなるエラーが見えると思います。 use LWP::Simple; use CGI::Carp qw(fatalsToBrowser); $url = "http://localhost/test.cgi";#自動リンク防止に「:」を全角にしてます $html = get($url); print "Content-Type: text/html\n\n"; print $html; ローカルにOracle 10g は、インストールしていませんよね? もししているならば、 use ENV qw(PERL5LIB); $PERL5LIB = ''; を 他のuse の前に書いていたほうがいいです。

suzuki-_-
質問者

補足

ご返答ありがとうございます ご返答頂いた内容を記述し実行してみたところ、 下記のようなエラー内容が出力がされました // Software error: Errno architecture (MSWin32-x86-multi-thread-4.0) does not match executable architecture (MSWin32-x86-multi-thread-5.0) at C:/Program Files/xampp/perl/lib/CGI/Carp.pm line 319. Compilation failed in require at C:/Program Files/xampp/perl/lib/IO/Socket.pm line 17. BEGIN failed--compilation aborted at C:/Program Files/xampp/perl/lib/IO/Socket.pm line 17. For help, please send mail to the webmaster (admin@localhost), giving this error message and the time and date of the error. Software error: [Tue Mar 6 18:33:10 2007] cgi.cgi: Errno architecture (MSWin32-x86-multi-thread-4.0) does not match executable architecture (MSWin32-x86-multi-thread-5.0) at C:/Program Files/xampp/perl/lib/CGI/Carp.pm line 319. [Tue Mar 6 18:33:10 2007] cgi.cgi: Compilation failed in require at C:/Program Files/xampp/perl/lib/IO/Socket.pm line 17. [Tue Mar 6 18:33:10 2007] cgi.cgi: BEGIN failed--compilation aborted at C:/Program Files/xampp/perl/lib/IO/Socket.pm line 17. Compilation failed in require at C:/Program Files/xampp/perl/lib/LWP/Simple.pm line 160. For help, please send mail to the webmaster (admin@localhost), giving this error message and the time and date of the error. // ・C:/Program Files/xampp がApacheを含め全てのディレクトリになります ・cgi.cgi が実行したファイルです 上記内容で参考になるでしょうか Oracleのほうはインストールしていません

関連するQ&A

  • LWPについて

    Perl,CGI初心者です。 LWPのUserAgent(もしくはSimple)を使ってWeb上のHTMLをGETして、そのHTMLの特定の部分を 出力するCGIプログラムを作成しています。 コマンドプロンプトで<perl "cgiプログラム>とすると想定通りの結果が得られるにも かかわらず、いざブラウザ経由で当該cgiにアクセスしようとすると、エラーにはなりま せんが、データがGETできていません。 何か原因は考えられるでしょうか? LWPを使用する際はApache側にも何か設定が必要なのでしょうか? Webサーバ:Windows XP,Apache2.2,Perl5.8.8

    • ベストアンサー
    • Perl
  • LWPモジュールについて教えてください。

    プログラミングは初心者です。 LWPモジュールのサブクラスLWP::Simpleの get()という関数を使いたいです。 現在、Perlは5.005_3を使用しています。 use LWP::Simple; require LWP::Simple; ・ get(URL) と入れると、500 Internal Server Errorと言うものが出てしまいます。 LWPを使うとき、どのようにすれば使えるのかご指導お願いいたします。

    • ベストアンサー
    • Perl
  • [PERL-CGI] LWPを使った際リダイレクトされたか否かを知る方法について

    下記のように、任意のホームページを取得してそれを出力するプログラムがあるのですが、リダイレクトで引越しされたホームページにアクセスしても、特に問題なく表示されます。 できれば、リダイレクトされた場合であれば、次から本当のURLにアクセスしたいためそのホームページを記録したいのですが何か良い方法は無いでしょうか? ご存知の方、教えていただけ無いでしょうか? 宜しくお願い致します。 -CGI---------------------------------------------------- #!/usr/bin/perl print "Content-Type: text/plain\n\n"; $url = 'http://URLを入れる'; use LWP; use HTTP::Cookies; $file = "cookies.txt"; $browser = LWP::UserAgent->new; $browser->cookie_jar({file =>$file, autosave=>1 }); $response = $browser->get($url); print $response->{_content}; __END__ if(リダイレクトされたならば){ open (OUT,">>RedirectLog.txt"); print OUT $url."\n"; close(OUT); } -CGI----------------------------------------------------

    • ベストアンサー
    • CGI
  • Perl LWPでproxyがうまく刺さらない

    Perl初心者です。 LWPでどうしてもproxyが通りません・・・。 何が悪いのかわかりません。教えてください。 モジュールは全て導入を確認しました。 よろしくお願いします。 稚拙なミスだったらごめんなさい。 use LWP::Simple; use LWP::UserAgent; use HTTP::Request::Common; my $ua = LWP::UserAgent->new( timeout=>"5" ); #cybersyndromeさんからLWP::Simpleでproxyを取得 $_ = get('http://www.cybersyndrome.net/pla5.html'); #proxyをリストに代入 (@proxy_list)=/\"\>(.*?)\<\/a\>\<\/li\>\<li\>/g; #適当なサイトをリクエストのターゲットに $r = new HTTP::Request GET,('http://taruo.net/e/'); #前述のターゲットへリクエストしてひとつづつproxyが通るか確かめたいのに何故かすべてすぐにERRORに for($i = 0;$i <= 10;$i++){ $proxy = 'http://'.$proxy_list[$i]; $ua->proxy ([qw(http https)] , $proxy); $req = $ua->request($r); if ($req->is_success) { print "Success!\n"; }else{ print "Error\n"; } }

    • ベストアンサー
    • Perl
  • LWPによるページ取得の問題

    すいません、アホです。いろいろ調べましたが、まったくみつかりませんでした。この質問をすることは初歩すぎて失礼かとおもいますが、堪忍してくださいませ。 LWPで相互リンクをされているかどうかをCGIファイルの登録ページ後に判断したいプログラムですが、同じCGIファイル内に登録ページがありまして、<INPUT size=30 name=url>のように相手リンクを登録した自分のHTMLを書いてsubmitさせて、 if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } で、取り出し、$FORM{'url'}まできます。URLがちゃんと$FORM{'url'}に入っているのは画面で確認できるのですが、下記のように指定した場合、相手HTMLを取得できません。エラーメッセージはでないで、真っ白い画面がでます。 $url = $FORM{'url'}; use LWP::Simple; $content = get("$url"); print "Content-type: text/html\n\n$content"; 下記はちゃんとうつります。 $url = 'http://www.yahoo.co.jp'; use LWP::Simple; $content = get("$url"); print "Content-type: text/html\n\n$content"; これは$FORM{'url'}のエンコードの問題なのでしょうか? まことに申し訳ありませんが、その方法をできれば具体的にお教えくださいませ。 何卒、宜しく御願いいたします。m_ _ m

  • LWPでtimeoutがうまくいかない

    LWPを使って外部と通信するプログラムを書きました。 通常時は希望通り動くのですが、相手のサーバが落ちている場合に エラーが戻るまで数分かかります。 ->timeoutの設定も入れたのですがききません。 URL先が落ちているときに、すばやくエラーが戻るようにしたいのですが、 どうしたらよいでしょうか? $server = "http://www.test.com"; $query{testid}="10"; $ua = new LWP::UserAgent; $ua->timeout(10); $request = POST($server, [%query]); $res = $ua->request($request); if (!$res->is_success) { print "Error\n"; exit 1; }

  • perlのLWPがページによって、正常に作動しません?

    下記コードを書いたのですが、ページのソースを取得することができません。 どのように変えれば、取得することができますでしょうか? 因みに、URL部分を、 http://www.amazon.co.jp/gp/product/B000H9I0F6 とした場合は正常に取得できました。 お分かりになる方、何卒、宜しくお願い致します。 #!/usr/bin/perl print "Content-Type: text/plain\n\n"; use LWP; use HTTP::Cookies; $url="http://www.amazon.co.jp/gp/product/B000GPEXX4"; $file="cookies.txt"; $browser = LWP::UserAgent->new; $browser->cookie_jar({file =>$file, autosave=>1 }); $response = $browser->get($url); print $response->{_content}; exit;

    • ベストアンサー
    • CGI
  • CGIの接続エラー

    PerlのLWP::UserAgentを使った接続で,エラーが生じてしまいます. ローカルからなら期待通りにページ内容を取得できるのですが,サーバに配置してブラウザからアクセスするとInternal Server Errorとなります. プロキシは使っていません.ファイアウォールやセキュリティソフトを切ってもエラーが生じてしまいます. 対象URL(下のコードではhttp://wikipedia.simpleapi.net/api?keyword=YouTube&output=xml)を変えても同じ結果になります. 理由がわかる方がいらっしゃればご教授願います. CGIにPerl5,サーバにApache Tomcat 5.5を利用しています. エラー内容とコードは下のようになっています. エラー内容 「500 Can't connect to wikipedia.simpleapi.net:80 (Bad hostname 'wikipedia.simpleapi.net')」 コード #!/usr/local/bin/perl use LWP::UserAgent; print "Content-type: text/plain\n\n"; my $ua = LWP::UserAgent->new; $ua->agent("Mozilla/5.0"); my $req = HTTP::Request->new(GET => "http://wikipedia.simpleapi.net/api?keyword=YouTube&output=xml"); my $res = $ua->request($req); $res = $ua->request($req); my $content = $res->content; print $content; exit;

  • Perl LWPでのIPv6エラー

    Perl LWPでのIPv6接続がエラーでつながらず、原因がわかりません。 記載しているソースで、Localhostに接続すると、LWP::UserAgentはエラーとなりますが HTTP::Tiny、wgetコマンドは、問題ありません。(IPv4の場合は、LWPも問題ありません)。 どなたか、よい解決へのお知恵をよろしくお願いします。 perl 5.16.1 CentOS 5.9 ------ソース----- #!/usr/bin/perl use strict; use Net::INET6Glue; my $uri = 'http://[::1]'; use LWP::UserAgent; my $ua = LWP::UserAgent->new; my $res = $ua->get($uri); print $res->content,"\n"; print "********************************\n"; use HTTP::Tiny; my $http = HTTP::Tiny->new; my $response = $http->get($uri); print $response->{content}, "\n"; -----結果----- Can't connect to ::1:80 (接続を拒否されました) LWP::Protocol::http::Socket: connect: 接続を拒否されました at /usr/local/perl-5.16.2/lib/site_perl/5.16.2/LWP/Protocol/http.pm line 51. ******************************** <html><body><h1>It works!</h1></body></html> ---環境--- This is perl 5, version 16, subversion 2 (v5.16.2) built for x86_64-linux cpan[1]> i /INET6/ Reading '/root/.cpan/Metadata' Database was generated on Fri, 01 Mar 2013 03:17:03 GMT Distribution SHLOMIF/IO-Socket-INET6-2.69.tar.gz Distribution SULLR/Net-INET6Glue-0.5.tar.gz Module = IO::Socket::INET6 (SHLOMIF/IO-Socket-INET6-2.69.tar.gz) Module = Net::INET6Glue (SULLR/Net-INET6Glue-0.5.tar.gz) Module = Net::INET6Glue::FTP (SULLR/Net-INET6Glue-0.5.tar.gz) Module = Net::INET6Glue::INET_is_INET6 (SULLR/Net-INET6Glue-0.5.tar.gz) Module < Net::Patricia::AF_INET6 (PHILIPP/Net-Patricia-1.19.tar.gz) Module < Net::Whois::Object::Inet6Num (AASSAD/Net-Whois-RIPE-2.002.tar.gz) 8 items found

    • ベストアンサー
    • Perl
  • LWP Cookie取得

    恐れ入ります。 LWPで、特定サイトにアクセスした時に発行されるCookieを任意のディレクトリに保存したいのですが、どのようにしたらよいかわかりません。 use HTTP::Cookies; use LWP::UserAgent; $ua = LWP::UserAgent->new(); $cookie_file = './cookie/xxx.txt'; $cookie_jar = HTTP::Cookies->new(file => $cookie_file, autosave => 1); $url = "http://~~"; $response = $ua->get($url); print $response->content; で、コンテンツは表示されますが、xxx.txtにcookieが保存されません。 #LWP-Cookies-1.0 のみが記載された白紙のxxx.txtが精製されます。 よろしくお願いします。

    • ベストアンサー
    • Perl