• 締切済み

use lib qw(./lib);が使えない?

システム名: Linux リリース: 2.6.9-89.ELsmp バージョン: #1 SMP Mon Apr 20 10:34:33 EDT 2009 Perl バージョン: 5.008005 Archive::Zipがインストールされていないサーバにlibディレクトリを作成して実行したいのですが、実行以前にエラーとなってしまいます。現在、libディレクトリはcgi-bin内にありますが、置き場所が悪いのでしょうか? 漠然とした内容で申し訳ございませんが、どのような理由が考えられるのかをお聞かせください。

みんなの回答

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.3

Web サーバによってはファイルの存在するディレクトリとは異なるディレクトリで実行される場合がある、というのを聞いたことがあります。標準モジュールの Cwd を使って、確認してはどうでしょうか。 use Cwd; $dir = getcwd(); # CGI に $dir を埋め込んで表示してみる

全文を見る
すると、全ての回答が全文表示されます。
  • t-okura
  • ベストアンサー率75% (253/335)
回答No.2

use lib qw(./lib); で use Archive::Zip; ができるためには Zip.pm が ./lib/Archive/Zip.pm にインストールされて いないといけません。 まずは Archive::Zip をどのようにしてインストールし、 どこにインストールされているのかを確認してください。 もし、Zip.pm が ./lib/site_perl/5.8.5/Archive/Zip.pm にインストールされているならば、 use lib は use lib qw(./lib/site_perl/5.8.5); とします。

salvohouse
質問者

お礼

Zip.pm は ./lib/Archive/Zip.pm にあります。 自宅で動作確認する際も、標準の Archive::Zip を削除して行いました。 念には念をと futomi's CGI Cafe さんのサーバーアナライザーをお借りして確認しましたが ./lib/Archive/Zip.pm 以外にモジュールは検出されない環境で問題無く動作しましたので安心していたのですが‥。

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

なんとかして「どのようなエラーなのか」を突き止めてください.

salvohouse
質問者

お礼

確かにエラーの内容が重要ですよね。 ある公共施設のページ制作をボランティアでおこなっていますが、担当者のプライベートPCでないとサーバにアクセス出来ないという特殊な環境で、30分程度の限られた時間内でリニューアルが完了するように準備を整えて出向いたつもりでしたが想定外のエラーだった為、use lib qw(./lib);とuse Archive::Zip;をコメントアウトする事と、急きょサーバーアナライザーを設置する事を優先してしまい、肝心なエラー内容が‥ 次回、内容を確認し、手に負えないようでしたら改めてご教授ください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • cgi-lib.plのReadParse関数

    あるパールからcgi-libを呼び出して、ReadParse関数を使おうとするとInternal Server Errorがでてしまいます。 パールの中身は #!/usr/local/bin/perl require 'cgi-lib.pl'; require 'jcode.pl'; &ReadParse(*in); です。 そこで3行目と5行目の行頭に#をつけて飛ばすとパールは正常に動きます。 これってcgi-lib.plのReadParse関数がいけないんでしょうか? ダウンロードしたまま何も変更していないのに..... ちなみにサーバーのパールのバージョンは5.004のようです。

    • ベストアンサー
    • CGI
  • 新しい linux で Pg.pm が使えなくないました

    postgreSQLを使い、CGIは perl 5.8.5、Pg.pm を使っているのですが、最近 linux のバージョンを新しくしたら CGI でエラーがでるようになりました。 apach のログを見ますと、Pg.pm でエラーがでているようです。 [Thu Jun 01 17:29:32 2006] [error] [client 210.196.83.97] Can't load '/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/Pg/Pg.so' for module Pg: libpq.so.4: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.5/i386-linux-thread-multi/DynaLoader.pm line 230., referer: http://... というのが出ています。 /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/Pg/Pg.so も /usr/lib/perl5/5.8.5/i386-linux-thread-multi/DynaLoader.pm も間違いなくありますし、パーミッションも問題ありません。しかも不思議なことにシェルからコマンドラインで CGI を実行してみたら、ちゃんと動きます。また少し古いバージョンの linux なら動いています。 少し古いバージョンの linux は Linux version 2.4.21-27.0.2.ELsmp (centos@centos-athlon) (gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-42)) #1 SMP Wed Jan 19 01:53:23 GMT 2005 j 新しくてエラーが出る方の linux は Linux version 2.6.9-34.ELsmp (buildcentos@build-i386) (gcc version 3.4.5 20051201 (Red Hat 3.4.5-2)) #1 SMP Wed Mar 8 00:27:03 CST 2006 です。postgreSQLのバージョンはどちらも最新版の 8.1.4 です。 どなたかこの現象の解決方法がわかるかたがいらっしゃったら、お教えください。

  • zip.lib.phpについて

    ものすごく簡単なことかもしれませんが zip.lib.phpについて質問します。 ファイル圧縮をしたくて「zip.lib.php」を使おうと思い require_once('zip.lib.php'); と書いていますが、実行されません。 レンタルサーバで「zip.lib.php」使いたいときは 単にこの書き方だけではダメなのでしょうか? PHPは4.3.10 MySQLはバージョンは3.23以上 勉強不足で申し訳ありませんが、 困っているのでお願いします。

    • 締切済み
    • PHP
  • useとrequireでエラー

    初歩的な質問で失礼いたします。 下記の記述でプログラムを実行すると正常にプログラムが動きます。(省略以降は全く同一のプログラムです) ■実行問題なし1 #!/usr/local/bin/perl require 'cgi-lib.pl'; require 'jcode.pl'; --------省略--------------- ■実行問題なし2 #!/usr/local/bin/perl use strict; use DBI; --------省略--------------- しかし、下記の記述だとエラーが発生していまいます。 #!/usr/local/bin/perl use strict; use DBI; require 'cgi-lib.pl'; require 'jcode.pl'; --------省略--------------- エラーログは、下記の通りです。 Global symbol "$in" requires explicit package name at search.cgi line 21. Global symbol "$parameter" requires explicit package name at search.cgi line 23. Global symbol "$name" requires explicit package name at search.cgi line 23. Execution of search.cgi aborted due to compilation errors. requireとuseは同時に記述してはいけないのでしょうか? 同時に記述しないと目的のプログラムを実現する方法が大きく変わってきてしまうので、非常に困ってしまいます。 もし、ご存知の方がいらっしゃったら教えてください。 宜しくお願い致します。

  • 'cgi-lib.pl'などのファイルの位置は?

    Perlの基本的な質問ですが、cgi-lib.plやjcode.plは どのディレクトリに入れれば自然でしょうか? 私はLinuxとWindowsの両方にPerl5.6を入れておりまして、今までは相対パスによって、スクリプトの近くに置いていましたが、ディレクトリ(フォルダ)が変わるごとに設定しなおしで面倒になってきました。 WEBでもレンタルサーバーなど利用したことは無いんですが、このような基本ライブラリは、require 'cgi-lib.pl';で呼び出して?いると思いますが、 しかるべき位置にこのファイルが無いとだめだと思います。ご教授ください。

    • ベストアンサー
    • Perl
  • DebianのApache(掲示板)CGIエラー 500エラー

    debianでkent-webさんのASKA BBSを使いたいんですが うまくいきません http://www.kent-web.com/bbs/aska.html aska BBS rootで/lib/usr/cgi-binに移動してvi test.cgi ------------------------------- #!/usr/bin/perl print "Content-type: text/html \n\n"; print "Hello"; -------------- を試して http://192.168.1.12/cgi-bin/test.cgi は動くんですが which perl /usr/bin/perlです パスはあっています 本題のBBSをデスクトップにDLし tar -xvzf 解凍をし rootで/usr/lib/cgi-bin/に aska.cgi askalog.dat jcode.plを置き パーミッションをhttp://www.kent-web.com/bbs/aska.htmlにあわせて わらかないのでsuEXECサーバ CGIWrapサーバ用のパーミッションと一般サーバを両方ためしてみたんですが http://192.168.1.12/cgi-bin/aska.cgi?mode=checkで試したんですが 500エラーがてしまいます ちなみにaska/aska.cgi?mode=check のaskaフォルダは作らず cgi-bin/aska.cgiです かわらなそうなので http.confの設定は <IfModule mod_alias.c> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ # # "/usr/lib/cgi-bin" could be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. # <Directory /usr/lib/cgi-bin/> AllowOverride None Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> </IfModule> AddHandler cgi-script .cgi .sh .pl ちゃんと#を外してあります それとほかの質問者の方を参考にしたんですが mod_aliasなんたら モジュールとかよくわからず apt-cache search module cgiなどといろいろ探したんですが無く これのperlのパスをわざと間違えさせてやっると500でエラーが出るってことはちゃんと動いてるはずだと思うんですが ちゃんともどすとhelloと表示されます 間違えーー>#!/hogehoge/hogehge/perl 元-->#!/usr/bin/perl #!/usr/bin/perl print "Content-type: text/html \n\n"; print "Hello"; それと疑いがあるのが aska.cgiのパスはちゃんと/usr/bin/local/perlを whichでみたperlのパス /usr/bin/perlに設定したんですが 動かないみたいです もしかしてgnome-text-editorなどviで開くと文字コードがかわったりしてだめなんでしょうか? もう思い当たる節がありません どなたか詳しい方教えてくださいお願いします

  • CGIが上手く動作しません!

    大学のサーバーを使っているのですが、FTTPが使えなくなり、WinSCPでアップロードしているのですが、掲示板を設置しようとしてCGIを使おうとして CGI プログラムをスクリプトで組む場合には,以下のインタプリタを利用して下さい. /bin/sh /usr/bin/perl (version 5.6.0) もきちんと守ってやってみたのですが出来ません。どうすればいいのですか?何処に.cgiを置けばいいのですか? また、次の文の意味が分からないのですが、cgi-binというディレクトリを津kる必要があるのでしょうか?手順を教えてください。 CGI を ~/public_html/cgi-bin ディレクトリ以下に hogehoge.cgi, hogehoge.pl (hogehoge は任意の文字列)のいずれかの名前を付けて置く事によって,“.htaccess”ファイルを用意しなくても CGI を実行できます. (実行権限は必要です)

    • ベストアンサー
    • CGI
  • CGI timeoutって? IISでのcgi設定

    すみません質問させてください。 今、XPでIISをインストールしてCGIが動くようにしてるんですが うまくいきません。 http://localhost/hello.cgi というurlで実行できると思うんですが、 いつまでも読み込んでるだけで、実行されない感じです。 CGI timeoutといわれます。 実行するCGIはHELLOと表示する単純なものです。 また、.cgiファイルは実行プログラムをC:\perl\bin\perl.exeに 指定しています。 IISでは、規定のWEBサイトのプロパティ>ホームディレクトリの 「構成」で.cgiの実行ファイルをC:\perl\bin\perl.exeに指定しています。 とりあえずやるだけやったと思ってるんですが、うまくいかないのはどうしてでしょう。 よろしくお願いします。

    • 締切済み
    • CGI
  • apacheとCGIの設定(httpd.conf)について

    Apache/1.3.26を使用しています。 CGIの定義の中に Alias /cgi-bin/ /usr/lib/cgi-bin <Directory /usr/lib/cgi-bin/> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> があるのですがこれは何を定義しているのでしょうか? また、ある指定のフォルダ /var/www/cgi-bin だけ CGI設置可能にするにはどうすればよいでしょうか?

  • PerlでZipファイルを作りたい

    PerlでZipファイルを作りたいのですが上手くいきません。 実行すると「Internal Server Error」になります。 Perlのバージョン:5.008009 文字コードは、Shift_JIS 改行コードは、Unix(LF)、です。 サーバーは「さくら」です。(ドリームホストも試しましたがダメでした) ファイル構成は zip.cgi data.txt 同じ階層に置いてます。 こちら https://www.h-fj.com/blog/archives/2010/07/19-203224.php のサイトを参考にさせてもらって下のように作ったのですが・・・ (print "Content-type: text/html¥n¥n";)は自分で勝手に 「いるんじゃない?」と思って付け加えました。 私、どこが間違っているのでしょうか? よろしくお願いします。 ———————————————————————————— zip.cgi ———————————————————————————— #!/usr/bin/perl use strict; use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); my $zip = Archive::Zip->new(); # Zipのオブジェクト作成 $zip->addFile('data.txt'); # ファイルを圧縮 # Zipファイルに保存する print "Content-type: text/html¥n¥n"; if ($zip->writeToFileNamed('test.zip') == AZ_OK) { print "test.zip is successfully saved.¥n"; } else { print "test.zip save error.¥n"; } exit;

    • ベストアンサー
    • CGI