- ベストアンサー
XML::RSSモジュールインストールなしで使うのにローカルで使用可、サーバ上でエラー
レンタルサーバを借りてサイトを運営しております。 このたび、RSSリーダを作ろうと思い、CPANからXML::RSSモジュールを落としてきました。 いろんなサイトを見まして、標準モジュールではないのでインストールが必要と書いてあり、落胆していましたが、 あるサイトに、 ./XML/RSS/というディレクトリを掘ってその中に格納すれば使える と書いてありましたので、 ローカル(Win32)でXML/RSSと2つフォルダを作り、 そのなかにRSS.pmをいれました。 すると使えません。 で、今度は、XMLというフォルダの中に直接RSS.pmを入れて使うと、 きちんと動きました。 レンタルサーバにFTPでアップすると、 どうしても500エラーが出ます。 いろいろコメントアウトして原因を探ると、 どうもuse XML::RSSでエラーが発生しているみたいなのです。 レンタルサーバはUNIXなので、 文字コードを変えたり、パーミッションを700,755,777,705,etc...と いろいろ設定しましたが動かず、どうしていいものかわかりません。 CGIやPerlについての知識があまりないのでどうしたらよいのかも全く見当がつきません。 過去の質問も見ましたが見当たりませんでした。 なんとしてもRSSリーダを完成させたいので、 どうぞよろしくお願い申し上げます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
@INCに含まれるディレクトリに目的のディレクトリがない ということであれば、 モジュールを use で取り込む前に use lib '追加したいディレクトリのパス' を実行すればよいです。 use lib の引数にはリストを取れますが まあ複数登録したいということもないでしょうからとりあえず。 詳しく知りたければ perldoc lib でドキュメントを見てください。 ところで #2のお礼のところにある > 同梱のEXAMPLEに入っていたRSS2HTML.PLですら同じエラーが出ます。 > "encode_eniaties_numeric is not >exported by the HTML:Entities module at XML/RSS.pm line 5" > これは何を意味するのでしょうか。 HTML::Entities というモジュールのバージョンアップの必要があるとか?
その他の回答 (2)
- maura
- ベストアンサー率46% (48/104)
念のために最新のXML::RSS(1.31)は以下のすべてのファイルの設置が必要です ./XML/RSS.pm ./XML/RSS/Private/Output/Base.pm ./XML/RSS/Private/Output/Roles/ImageDims.pm ./XML/RSS/Private/Output/Roles/ModulesElems.pm ./XML/RSS/Private/Output/V0_91.pm ./XML/RSS/Private/Output/V0_9.pm ./XML/RSS/Private/Output/V1_0.pm ./XML/RSS/Private/Output/V2_0.pm XML-RSS-1.21 の古いバージョンだと ./XML/RSS.pm の設置だけでも何とかなるかもしれません。 それでも駄目な時は、さらに古い 0.96 ではどうでしょう?
お礼
ありがとうございます。 バージョンが1.02だったので、1.31の最新版をDLしてきました。 ローカルでも全く動かなくなりました。 同梱のEXAMPLEに入っていたRSS2HTML.PLですら同じエラーが出ます。 "encode_eniaties_numeric is not exported by the HTML:Entities module at XML/RSS.pm line 5" これは何を意味するのでしょうか。
- sakusaker7
- ベストアンサー率62% (800/1280)
なんで500エラーになっているか調べられないのですか? httpdのログを見るとか。 多分置いた場所と @INC に格納されている情報のつじつまが合っていないんじゃ ないかと思いますけど。 ログを見ることができないのなら、 CGI::Carpを使って、エラーメッセージをブラウザで見られるように するとよいでしょう。 use CGI::Carp qw(fatalsToBrowser); 少なくともあてずっぽうにあれこれやらないですみます。 原因がつかめたらこの行はコメントアウトしときましょう。
お礼
レンタルサーバなのでログは見られないのです。 教えていただいた方法で見たところ、 @INCの問題でした。 その後どうしたらいいかわかりません。 教えていただけないでしょうか。
お礼
パスを追加したいのですが、 ルートディレクトリからだと思うのでわからないのです。 Perlスクリプトの正確な位置を返す変数かなにかありますでしょうか。 $ENV{'SCRIPT_NAME'}だと不完全で。