シンプルなデザインが気に入り,CMONOSを導入しました.
インストーラを動かし,パーミッション最適化間では問題なく動きますが,設定の復元で停止してしまいます.説明の通りに何度か試してみましたが,そこから先に進みません.
原因としてどのようなことが考えられますか?
ご質問ありがとうございます。
また CMONOS.JP の導入をご検討いただきありがとうございました。
さて、設定の復元でフリーズしてしまう件ですが、問題が再現するかどうか弊社テスト環境でテストいたしました。
結果、SDBM の場合、キーと値の合計が1024byteまでに制限されており、デフォルトのテンプレート設定などの容量が、この制限を超えてしまうため、致命的なエラーが発生することがわかりました。
(SDBM は4096byteまで受け付けると思い込んでいたのですが、デフォルトの設定では1024byteまでのようです。)
そこで、容量が大き過ぎて記録できないデータを無視するよう修正したバージョンを公開しましたので、よろしければ新しいバージョンをダウンロードして、CMONOS ライブラリを差し替えて下さい。その後、インストール作業をすれば正常に動作するのではないかと思います。
ただ、その場合も、DBMデータベースに記録できる1レコードあたりの容量が1KB(半角換算で1000文字)までとなってしまいますので、容量が1KBを超えるテンプレートの設定や長文データの登録などがキャンセルされます。
そこで、もし可能でしたら、サーバ管理者に gdbm または Berkeley DB のインストールを依頼して下さい。gdbm(GDBM_File) と Berkeley DB(DB_File) には容量の制限がありません。
この度は相当辛抱強く試行錯誤して下さったものと拝察いたします。たいへんなご不便をおかけして申し訳ありませんでした m(_ _)m。問題のご指摘に心より感謝いたします。
早々の対応ありがとうございます.
再度インストールしてみましたが,設定の復元でフリーズすることはなくなりました.
しかし,「容量が大き過ぎる3件の設定復元に失敗しました。」との表示がされました.
セットアップアシスタントの画面は開きますが,メンテナンスステーションの画面は「500 Internal Server Error 」が出ています.
データベースに問題があることはわかりましたが,今のサーバ環境で何らかの対応策はありますでしょうか?
インストール作業おつかれさまです。SDBMに起因する不具合は解消されたようでほっとしております。
インストール時に復元に失敗した設定は、具体的には、日記やニュースのテンプレート設定ですので、このままでも日記やニュース以外の CGI は、問題なく動作します。
日記やニュースを動作させるためには、テンプレートを半角換算で1000文字以内に押さえる必要があります。デフォルトでは1800字前後となっていますが、1000字以内にするのはかなり厳しいかも知れません。
(たいていのサーバで、4096バイトまでの NDBM か、容量に制限のない GDBM または Berkeley DB が利用できますので、1024バイトに制限される ODBM や SDBM 環境については、動作検証が行き届いていませんでした。)
メンテナンスステーションがエラーになるとのことですが、cgi-data フォルダの位置または名前を変更してインストールされているのではないでしょうか?
cgi-data フォルダの位置を変更してインストールされている場合、セットアップアシスタント以外で必ずエラーとなります。
インストール作業の後、もういちどセットアップアシスタント(/cgi/setup/start.cgi)にアクセスすると、インストーラーではなく通常の画面になります。
左上のメニューから「サイトテンプレート適用」を選択して下さい。
サイトテンプレートとして「デフォルトのサイトテンプレート」を選択し、「選択したサイトテンプレートをこのディレクトリに適用する」を実行すると、全てのCGIについて、cgi-data フォルダのパスが修正されます。
この作業が完了した後は、エラーが発生しません。
もし、cgi-data の位置を変更していないのに、エラーが出る場合は、デフォルトの位置関係を保ったままインストールされたのか、env.pl のどこを書き換えられたのか、など、インストール前の準備作業について教えていただけると、問題解決のヒントとなります。
以上よろしくお願いいたします。
メンテナンスステーションの件は仰られた通りです.cgi-dataフォルダの階層が誤っていました(ウェブページ公開フォルダの中に入っていました).上記の通りに設定したところ,問題なく動作しました.ありがとうとございました.
ご報告ありがとうございます。
無事動作したとのことで、うれしいです!
念のため、テンプレートを1KB以下に押さえたページ設定をご用意しました。よろしければこちらのファイルを解凍してご利用くださいm(_ _)m。
これで、ニュースについても動作することと思います。
ニュース以外の用途で使う場合でも、ダウンロードファイルから復元したページ設定を参考に、テンプレートを短めにしていただければ、なんとか使っていただけるのではないでしょうか。
ただ、Vicuna CMS 互換設定については、テンプレートの記述が長くなる傾向があるため、残念ながらうまく動作しないことと思います。いろいろ制限がかかってくる場面もあるかと思いますが、CMONOS.JP が NahaNaha 様のお役に立てましたら幸いです。
また何か使い方に関する疑問などありましたら、基本的なことでもけっこうですので、どうぞお気軽に新しいスレッドを作るなどして、フォーラムにご参加ください。
【追記】
env.pl の60行目「データベース1レコード容量」を970程度に設定しておくと、容量を超える設定やデータを入力したとき警告が表示されます。この設定が 4000 の場合、お使いの環境では警告なしに書き込みが実行されてしまいますのでご注意ください。
# データベース1レコード容量
$db_maxlength = 970;
再度の回答ありがとうございます.
もう一歩でページができそうです.
早速作っていただいた新しいニュースの設定ファイルを導入してみました.
その結果,
1.新しい記事自体は作成されますが,トップページからニュースのタブを開くとNot Foundとなっています(index.shtmlに書かれてある).
2.トップページなどでも「500Internal Server Error」とでますが,書き込み自体は正常にできています.
3.RSSも同様にエラーが出ます.
ひょっとすると,ファイルのユーザ設定当たりに問題があるのでしょうか?管理者の指定通りに以下の設定をしています.
もう一歩で使えそうになりそうなのですが….お手数をおかけします.
インストール作業お疲れさまです。
インデックスが Not Found
もし、正常に index.shtml が更新されているようでしたら、.htaccess の設定を確認して下さい。
「~/htdocs/_htaccess」のファイル名を「~/htdocs/.htaccess」に変更していない場合は、「.htaccess」に変更します。
.htaccess に書かれている設定のうち下記の記述が、ディレクトリのインデックスファイルを指定しています。
DirectoryIndex index.html index.htm index.shtml 1.html 1.shtml index.cgi start.cgi
もし、.htaccess による設定が許可されていない場合は、env.pl を開き 93行目の SSI拡張子設定を「html」に変更するとよいでしょう。
トップページの書き込みでエラーとなる
正常に書き込みができていると言うことは、RSS書き出しなどで問題が発生しているのかも知れません。「RSS更新」のチェックを外して「保存」しても状況は変わらないでしょうか。
RSSがエラー
RSSがまったく書き出されておらず、/index.xml が空ファイルのままではないでしょうか。となると、UTF-8の処理で何か問題が発生しているのかも知れません。
パーミッションについて
CGIが所有者権限で動作する環境では、通常下記設定で動作します。下記設定で動作するようなら、こちらの方が安全です。
$file_mode=0604;
$dir_mode=0705;
$cgi_file_mode=0705;
env.pl の設定を変更後、メンテナンスステーションの「パーミッション最適化」で、全ての関連ファイルについてパーミッションを変更できます。
【簡単なデバッグ方法について】
下記サイトより、KCatch.pm を入手します。
http://www.kawa.net/works/perl/catch/news.html
/cgi/top フォルダに KCatch.pm をアップロードします。
/cgi/top/start.cgi の冒頭を下記のように書き換えます。
#!/usr/bin/perl -w
# サーバのパスに合わせる
use KCatch qw( mode=html );
一行目に文法チェックオプション「-w」を追加し、3行目行頭の「#」を削除。
この状態で動作させると、エラー発生時に、エラーログをブラウザに表示します(重度のエラーを除く)。
以上お試しいただけると、問題解決のヒントを得られるかもしれません。
KCatchを試してみました.RSS更新に問題があるようです.
以下がKCatchのログです.
宜しくお願いします.
Catch: Sun Sep 27 20:38:05 2009 [_Classic.pm:263:warn] Use of uninitialized value in pattern match (m//) at ../../../cgi-data/lib/Jcode/_Classic.pm line 263.
[_Classic.pm:263:warn] Use of uninitialized value in pattern match (m//) at ../../../cgi-data/lib/Jcode/_Classic.pm line 263.
[Base.pm:1101:die] Can't locate CMONOS/CGI_Lib/Feed/RSS2_0.pm in @INC (@INC contains: ../../../cgi-data/lib /opt/perl_64/lib/5.8.0/IA64.ARCHREV_0-thread-multi-LP64 /opt/perl_64/lib/5.8.0 /opt/perl_64/lib/site_perl/5.8.0/IA64.ARCHREV_0-thread-multi-LP64 /opt/perl_64/lib/site_perl/5.8.0 /opt/perl_64/lib/site_perl .) at ../../../cgi-data/lib/CMONOS/CGI_Lib/Base.pm line 1101.
ご協力ありがとうございます。
「~/cgi-data/lib/CMONOS/Feed/RSS2_0.pm」がみつからないか、なんらかの原因で致命的なエラーとなっているようです。
アップロード途中でフォルダがスキップされたか、ファイルが壊れた可能性はないでしょうか。
「~/cgi-data/lib/CMONOS/Feed/RSS2_0.pm」を再度アップロードし直した後、正常に動作するかどうか試していただければと思います。
それでもエラーとなる場合は、「~/cgi-data/lib/Jcode」フォルダを削除して下さい。Perl のバージョンが5.8以降であれば、このフォルダがなくても Jcode.pm のみで動作します。
何度もすみません.
RSS2_0.pmのエラーは吐かなくなりました.
解凍時に問題があり,正常に解凍してなかったのが問題のようです.
しかし,Jcodeのエラーは相変わらずです.
サーバ管理者に問い合わせてみる
と,jcode.plではなく、use Encodeかuse encoding を使ってほしいと言われました.
どういうことでしょうか?
以下ログです.
お疲れさまでした。
ほぼこれで問題ないかと思います。
Jcode.pm は、jcode.pl とは別のモジュールで、Encode のラッパとして動きますから、使用して問題ありません。エラー情報を見る限り、Jcode.pm のエラーは文法チェックモードでのみ発生するのではないかと思います。
「~/cgi-data/lib/Jcode」フォルダを削除しても問題なく動くようでしたら、削除してしまって下さい。そうすると、エラーを吐かなくなるかもしれません。
「~/cgi-data/lib/Jcode」フォルダを削除するとうまく動かない場合は、「/cgi/top/start.cgi」の冒頭を元に戻して下さい。
一行目に文法チェックオプション「-w」を削除し、3行目行頭に「#」を挿入します。
一度きれいにして再インストールしてみました.
結局,私が導入しようとしていたサーバのPerlのバージョンが5.8.0と少し古かったため,JcodeがEncode のラッパーとして動かなかったこと(Perl5.8.1以降の対応)がRSSのエラーの原因のようです.
正しい対処法ではなさそうですが,Jcode/_Classic.pm line 255を
に変えてみると動きました.
とりあえず,今のところはフィードも表示され,問題なさそうです.
より良い解決策がありましたらお知らせください.
2日間お付き合いいただきありがとうございました.
なるほど、5.8.0 では問題が出るのですね。
最近 5.8.1 以降の環境か、Jcode.pm がコンパイルされている環境しか扱っていなかったので、このような問題が発生することを全く把握していませんでした。たいへん参考になりました。
ただ、弊社には Perl 5.8.0 環境がなく検証ができないため、対処法をご呈示することができません。
ネット上でざっと調べてみたところ、Jcode.pm の古いバージョンなら大丈夫だという書き込み(の痕跡)をみつけました。
Jcode 0.88 なら、CPAN からダウンロードできるようですが、このバージョンでうまく動くかどうかはわかりません。。。
あと、応急処置としては NahaNaha さんの対処でもよいようですが、UTF8の関わる処理で期待通りに動作しないケースもあるそうです。
また、「Jcode.pmでconvertできない - 教えて!goo」の二つ目の回答で提案されている「$NOXS」は、2.0x では _Classic.pm 18行目にあります。「$NOXS = 0;」を「$NOXS = 1;」とすると、エラーが出なくなる場合もあるようです。
こちらにご相談される前からかなり長い間悪戦苦闘されたのではないでしょうか。なんとか動くようになり、弊社としてもうれしい限りです。また何かお気づきの点がありましたらぜひご指摘ください。お待ちしておりますm(_ _)m。
詳細な説明ありがとうございます.
RSSもどうにか動くようになりました.
上記にあるようにUTF8の変換に一部問題があり,RSSが正常に動きませんでした(チルダがアッパーバーに変換されるなど).全てJcode絡みの問題ですが,とりあえず「~/cgi-data/lib/CMONOS/Feed/RSS2_0.pm」の中で指定してあるエンコードをutf8からeucに変更することで動くようになりました.
重ね重ねアドバイスありがとうございました。
Perlが5.8.1以降か Jcode.pm があらかじめインストールされている環境でないと、なかなか手強いですね...。
UTF8への変換でいろいろ問題が出ているとのことで残念です。それにも関わらず工夫を凝らして使っていただけて、とても光栄です!
今後 CMONOS.JP をアップデートするときに、改造したファイルをうっかり上書きしないようご注意ください。
また何かいい方法がみつかりましたら、ぜひご教授いただければありがたいです。今後ともどうぞよろしく御願いいたしますm(_ _)m。