開発環境で作っていたプログラムをサーバーにアップしたところ、HTML::Template::Proが見つからないということで下記のようなエラーが出てしまいました。
Can't locate loadable object for module HTML::Template::Pro in @INC (@INC contains: 〜〜〜〜 .) at hogehoge.cgi line 12
Compilation failed in require at hogehoge.cgi line 12.
BEGIN failed--compilation aborted at hogehoge.cgi line 12.
使用しているレンタルサーバーにHTML::Template::Proがインストールされていないせいだと思ったので、やむを得ず開発環境のpmをサーバーにアップしたのですが同じエラーが表示されたまま変わりません。
・ライブラリ類はlibフォルダを作ってその中にcpanも含め全て格納し、use lib './lib'で読み込み場所を指定しています
※自作ライブラリも同じフォルダに入れてあり、こちらはuse hogehoge;すれば問題なく読み込めることを確認しています
・開発環境のcpanは、find / -name "Pro.pm"で場所を確認して、該当ファイルを取り出してアップしたつもりです
何か原因に思い当たることはございませんでしょうか。
また、これを試してみた方がいいよ、などもあればお教えください。
よろしくお願いいたします。
■対応案1
libフォルダにモジュールをコピーされて、パスも通っているということですが、
lib/HTML/Template/という階層になっていますか?なっていなければパッケージ名の構成にあわせてみてください。
■対応案2
本番環境でCPANを利用できるのであれば
cpan -i HTML::Template::Pro
として、まっとうな方法でライブラリをインストールした方が良いと思います。
HTML::Template::ProはXSのライブラリのようなので、単純なpmファイルのコピーでは動作しない可能性もあります。
またはCPANからソースを取得して、インストールしても良いと思います。
HTML::Template::Pro - Perl/XS module to use HTML Templates from CGI scripts - search.cpan.org
Perl/XS module
だそうなので、pure perl ではないね。
この場合対象のサーバーと同じか近い環境でコンパイルしたバイナリも用意する必要がある。
で、
やむを得ず開発環境のpmをサーバーにアップしたのですが同じエラーが表示されたまま変わりません。
の場合はインストール自体がミスってるね。
Pro.pm の配置場所はあってる?
./lib/HTML/Template/Pro.pm
いつもご回答ありがとうございます。
> この場合対象のサーバーと同じか近い環境でコンパイルしたバイナリも用意する必要がある。
そうなんですか。
上の回答にも書きましたが、パス自体は合っているはずでです。
とりあえず本番で普通にcpanを使ってインストールできないか問い合わせてみることにします
ありがとうございました
http://www.tohoho-web.com/wwwperl2.htm
>外部ファイルを perl のライブラリとして呼び出す
ご回答ありがとうございます。
ただ、もう少し丁寧にご説明いただけると助かります。。。
Pro.pmをこの関数で指定するべきということでしょうか?
ご回答ありがとうございます。
パスそのものはご回答内のフォルダ直下にPro.pmがあり合っているはずです。
やはり通常通りcpanでインストールするのが一番なんですね。
とは言え、共用サーバーで自分で実行できない環境なのがつらい。。。
管理者に問い合わせてみるしか手がなさそうですね。
ありがとうございました