トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

サポート掲示板

ページの作成や編集にはユーザ登録が必要です。

FSWikiサポート掲示板

  • 設置に関するトラブルや要望などがあれば書き込んでください。
  • 記事のタイトル一覧をサポート掲示板一覧で見る事ができます。それ以前の過去ログは[サポート掲示板]から参照できます。
  • 投稿する前に
    • Tips、FAQ、サポート掲示板の過去ログに同様の内容がないかを確認してください。
    • バグ報告に関してはバグトラックのほうにお願いします。
    • 機能拡張のためのパッチやプラグインの投稿はプラグイン投稿にお願いします。
      • パッチは本体にあてるものの場合はGPL、プラグインにあてるものの場合はプラグインのライセンスにしたがうものとします。
    • 開発に関するご意見、質問等はメーリングリストにお願いします。
  • FSWikiとは無関係と思われる投稿、コメントに関しては削除させていただきますのでご了承ください。
  • 特定の設置環境でのみ発生するトラブルがいくつかあります。トラブル報告の際には、「どんな設定の」「どのサーバ/レンタルスペースに」「どうやって」設置したかを詳しく書くと、返事がもらいやすいですよ
  • どういうことを書けば回答を得やすいか判らない方は、こちらのページをご一読ください。
お名前
件名
本文

ページタイトルに特定の文字を持つページをリストアップ - 斉藤 (2010年09月28日 00時32分09秒)

例えば、ページの名前に、「ア」という文字を含むものをカテゴリープラグインのようにリストアップすることは可能でしょうか? 検索ではなく、ページ名だけをリストアップしたいのですが。

  • ご要望とは少し違うかもしれませんがBugTrack-plugin/129などはいかがでしょうか - 名無しさん (2010年09月28日 09時23分38秒)
お名前: コメント:

アンカーへのリンク - 錨 (2010年06月26日 13時09分16秒)

[[サポート掲示板]]

というようなリンクを作るのはできるのですが、そのページのあるアンカーへのリンクを作る時はどうすればいいのかがわかりません。HTML でなら、URLの後に#bottomなどとするあれです。

  • Wikiページリンク([[ページ名]])の機能として、アンカーを指定することはできません。よって、外部 URL へのリンクとして次のように記述するしか方法がありません。 - 名無しさん (2010年06月26日 19時31分33秒)

このページの最初のパラグラフへのリンク

[このページの最初のパラグラフへのリンク|./wiki.cgi?page=BBS%2D%A5%B5%A5%DD%A1%BC%A5%C8%B7%C7%BC%A8%C8%C4%2F933#p0]
  • わかりました。とりあえずはあきらめます。アンカー指定することができればいいのですがね。 - 錨 (2010年06月26日 22時27分39秒)
  • 装飾用HTMLタグプラグインの、a プラグインを修正すればすぐ対応できそうですね。がんばってください。 - 名無しさん (2010年06月27日 00時21分27秒)
  • わたしはこういうのを使っていますが・・・通常のリンクでページ内アンカーに飛べるようになるパッチ 見当違いだったら、ごめんなさい。 - hypatia (2010年06月27日 00時28分56秒)
  • お、まさにこれじゃないですか。 - 名無しさん (2010年06月27日 00時33分49秒)
お名前: コメント:

Time outエラーについて - わ (2010年06月23日 18時12分20秒)

IISが動いており、Apacheを入れたくなかったので、FSWikiをIISで設定したところ、下記のようなエラーが出ました。どなたか解決法を教えてください。

CGI TimeoutThe specified CGI application exceeded the allowed time for processing. The server has deleted the process.

---------------------------------------------------------------------------------------------------------------------------------

設置環境は、Windows XP Pro

IIS 5.1です。

IISの設定で、既定のWebサイトを右クリックして、新規作成で仮想ディレクトリを作成しました。

プロパティの仮想ディレクトリタブでは、実行アクセス権:「スクリプトおよび実行可能ファイル」アプリケーション保護:「中(プール)」

構成のボタンを押して、マッピングタブのところで、拡張子「.cgi」を追加しました。実行ファイルは、「C:\Perl\bin\perl.exe」拡張子は、「.cgi」動詞の制限は、「PUT,DELETE,HEAD,GET,POST」スクリプトエンジンにチェックしました。

ドキュメントタブでは、wiki.cgiを追加しました。

ディレクトリセキュリティタブでは、編集を押して、匿名アクセスにチェックIISによるパスワードの管理を許可するにチェック統合Windows認証にチェックしました。

  • Perlの情報も欲しいですね。 - 通りすがり (2010年06月24日 19時27分35秒)
  • Perlのバージョンは、v5.10.1です。コマンドプロンプトで、perl -vを入力して、動作することを確認済みです。 - わ (2010年06月24日 20時15分33秒)
お名前: コメント:

編集後、保存するとエラー表示が出る - Hiroyuki (2010年05月30日 09時42分06秒)

ドキュメントを編集後、保存するとSoftware Error:Undefined subroutine &Jcode::_Classic::euc_utf8 called at lib/Jcode/_Classic.pm line 255. とエラーメッセージが出ます。 編集はできており、表示されているURLを選択してEnterするとFrontPageが表示され、先ほど編集したページに行くと、きちんと編集されてはいますが、エラーは気になります。どなたか思い当たる原因、解決策をご存知ないでしょうか? よろしくお願いいたします。

  • 情報不足。環境の記述をヨロ - 名無しさん (2010年05月30日 12時13分09秒)
  • BBS-サポート掲示板/759? - 名無しさん (2010年05月30日 16時48分07秒)
  • サポート掲示板/759を見て、修正を行ったところ解決いたしました。早速のコメントありがとうございました。 - Hiroyuki (2010年05月31日 13時25分48秒)
  • BBS-サポート掲示板/759 、どっかいっちゃったみたいですね。今現在これで困ってるんですが… - CatFish (2012年01月18日 17時56分50秒)
  • perl5.8.1未満だと発生するようですね。lib/Jcode/_Classic.pm を以下のように変更することで動きました: - CatFish (2012年01月18日 18時14分54秒)
sub utf8{
    load_module("Jcode::Unicode");
    Jcode::euc_utf8(${$_[0]->[0]});
}
お名前: コメント:

farm のページに本体からインクルード - あきら (2010年05月11日 11時50分55秒)

ファームのページに、本体のページ、またはページの一部をインクルードすることはできますか?

  • 152は見たの - 名無しさん (2010年05月11日 13時47分40秒)
お名前: コメント:

xampp のデフォルト設定 PerlSwitches -T への対応が必要かもしれません - Harraboo (2010年04月11日 16時28分42秒)

お世話になっています。既にFreeStyleWikiを導入しているのですが、今回の導入時に少し問題があったのでご報告致します。

導入環境

FreeStyleWiki : wiki3_6_3_1.zip
Apache : xampp-win32-1.7.3.exe(インストーラ版)

現象

実行時に、下記エラーが発生する。

Insecure dependency in eval while running with -T switch at lib/Wiki.pm line 285. 

問題箇所

284. my $module = "plugin::${plugin}::Install";
285. eval 'require &Util::get_module_file($module);'.$module.'::install($self);';

私の対処方法

xampp/apache/conf/extra/perl.conf の下記部分をコメントしてapache2を再起動する。

5. PerlSwitches -T

所感

  • Ubuntuに初めからインストールされているApache2の環境では、-T オプションが追加されていないため、こちらでは発生しませんでした。
  • 試しに、既に稼動しているUbuntu環境のwiki.cgiの1行目を
#!/usr/bin/perl -T

のように変更して試したら、同じエラーが発生しました。

最新のxampp環境へ導入される場合への注意書きなどを、readmeなどで記載された方が良いかもしれません。

また、fswikiのサイト検索したところ、下記トラブルも、同じ原因で発生しているのかもしれません。

BBS-サポート掲示板/720

長文失礼致しました。よろしくお願いいたします。

掲示板について - 名無しさん (2010年02月23日 19時14分43秒)

掲示板を設置するにはどのように入力したらいいのでしょうか??

お名前: コメント:

リンク先のタイトルを自動で取得するプラグインはありませんか? - nankichi (2010年02月22日 10時38分18秒)

会社のシステム部がFSwikiを入れたので、その使い方を現場として模索しています。

はてなダイアリ 記法で :titleに相当する機能を実装するplug-inはありますでしょうか。

機能:urlを記事中に記載すれば、自動的にそのurlのtitle headerを取得して文字列と表示する

  • はてなは使っていないので、はてなダイアリ記法 :title についてはこの記事を見るまで知らなかったのですが、面白い機能ですね。既存プラグインには無さそうだったので作ってみました。後ほど、プラグイン投稿ページに投稿します。 - ぐうます (2010年02月22日 19時57分16秒)
  • BugTrack-plugin/412 に投稿しました。 - ぐうます (2010年02月22日 21時06分58秒)
  • ありがとうございます!無事実装できました。 - nankichi (2010年02月23日 16時21分05秒)
  • すみません、認証がかかっているページなどタイトルがとれない場合にerrorが出るようです。 - nankichi (2010年02月23日 16時24分38秒)
  • どんなエラーが出ますか? コピペしていただけるとありがたいです。また、レスポンスコードで成否を確認するように修正しようと思っていますが、当方案としては、タイトルが取れない場合には URL をそのまま表示しようと思っています。それ以外に、エラー時にどうするべきかアイディアありましたらコメントお願いします。 - ぐうます (2010年02月23日 17時32分38秒)
  • >Lock is busy. at lib/Util.pm line 394. at lib/Util.pm line 679. 実装は私がしていないので詳細は不明です、すみません。 またエラー時の処理はご指摘通りが望ましいです。 - nankichi (2010年02月23日 21時40分32秒)
  • このエラーが出るのは、タイトルが取得できない場合というよりも、URL が長くてキャッシュファイルが作成できない場合ではないかと思います(BugTrack-plugin/412 の注意事項の第 1 項に記載した内容)。URL が長めだったりしませんか? 修正版にはとりあえず、URL 長さ対策を入れようと思います。 - ぐうます (2010年02月23日 22時14分07秒)
  • ご指摘の通りurlで渡しているパラメータが異常にながかったようです。 - nankichi (2010年02月25日 12時28分12秒)
  • ご指摘の通りurlで渡しているパラメータが異常にながかったようです。 - nankichi (2010年02月25日 12時28分14秒)
  • rss プラグインにも同様の問題がありましたので、以前修正しました。BugTrack-plugin/325 のコメント欄にパッチがあります。ご参考まで。 - 名無しさん (2010年02月25日 12時52分20秒)
  • 外部リンクであることを示すアイコンがついたら使いまくりそうです - すなぷ (2010年02月26日 09時37分32秒)
  • ということで付きました。→こちら - 名無しさん (2010年12月29日 11時25分25秒)
お名前: コメント:

管理画面で削除されたページを完璧に削除したい - ぴの (2010年02月01日 19時25分16秒)

管理画面にて削除されたページを復元可能ですが、checkboxで完全にキャッシュも削除するような事って不可能でしょうか。

これは、wiki設置当初、ページ名を「テストページ」とか「テスト」「あああ」というような形で適当にページ作成される方もいらっしゃると思うのですが、いつまでも管理画面にそのようなページが復活可能として残っているのも、何か無意味と思いまして・・。

キャッシュのみ消したいページを消せば良いのかな・・とも思うのですが、エンコード?されている為、どれがどれなのかも良くわからないので、何か良いアイデアとかありましたらご教授ねがえませんでしょうか

お名前: コメント:

カレンダー表示がうまくいかない - 名無しさん (2010年01月18日 01時09分07秒)

3.6.3にバージョンアップしてからカレンダーの1ヶ月分表示がうまくいきません。1〜9月分と1〜9日分が表示されません。1〜9月分については月数を二桁で記述すると10〜31日分は表示されるようになりました。1〜9日分については記事を作成し直しても1か月分表示に出てきませんでした。

  • ここでは問題無いようです。(カレンダーの例:履歴/2008-7) - 名無しさん (2010年01月18日 09時03分43秒)
  • ありがとうございます。自分だけの問題のようですね。解決できたらまた報告に来ます。 - 名無しさん (2010年01月19日 23時10分24秒)
お名前: コメント:

CGIでファイル削除ができない環境で動作可能でしょうか? - pogepoge (2010年01月08日 15時41分42秒)

こんにちは、悪名高きIISを使用して社内でFSWikiを動かそうと悪戦苦闘しております。使用環境は以下の通りです。

OS : Windows 2003httpd : IIS 6.0Perl : Active Perl 5.6.1Readmeなどの手順どおりセットアップしてwiki.cgiにアクセスすると、

Software Error:Lock is busy. at lib/Util.pm line 394. at lib/Util.pm line 679.が出ました。このサーバーではCGIからファイル、ディレクトリの削除はできず、

また多数いるユーザーのうちの1人でしかないため、この設定を変更することはできません。

そこで試しに./lib/Util.pmのrmdirがある行を全てコメントアウトして実行したところ、

Software Error:Lock is busy. at plugin/core/ShowPage.pm line 68. at lib/Util.pm line 679.となってしまいました。解決方法が見つからず、導入をあきらめようかと考えているところです。どなたか対処方法が分かる方、是非お助けて下さい。

  • 状況が理解できませんが、とりあえずPrel5.8にしてもらうところからではないかと。 - 通りがかり (2010年01月16日 11時41分16秒)
お名前: コメント:

テンプレートのEDIT_MODE - MRB (2009年12月29日 09時51分32秒)

テンプレートファイル(.tmpl)で、「編集」時のみメッセージを表示させたいときなど、「TMPL_IF NAME="EDIT_MODE"」(実際は全て半角。以下同じ)と記述しますが、「編集」モードだと考えられるにもかかわらずのEDIT_MODEと判定されない(「TMPL_IF NAME="EDIT_MODE"」内の文章が有効にならない)パターンがあります。

「TMPL_IF NAME="EDIT_MODE"」内が有効になるパターン

  • メニューの「新規」以降の画面(ページ名入力画面→ページ編集画面)
  • 既に作成したページ(存在しているページ)の「編集」から遷移したページ編集画面

「TMPL_IF NAME="EDIT_MODE"」内が有効にならないパターン

  • 存在しないページをダブルブランケットで囲んだときに「ページ名?」と表示されるが、そのページ名の後に表示された「?」リンクをクリックして遷移したページ編集画面

とりあえずは?の時に出力するURLにaction=EDITを付け加えるよう、HTMLParserのwiki_anchorを修正しました。

return 釤<span class=\釤nopage\釤>釤.&Util::escapeHTML($name).釤</span>釤.
#釤<a href=\釤釤.$self−>{wiki}−>create_page_url($page).釤\釤>?</a>釤;
釤<a href=\釤釤.$self−>{wiki}−>create_url({action=>釤EDIT釤,page=>$page}).釤\釤>?</a>釤;

本体側を修正しないで「有効にならないパターン」を回避する方法はあるでしょうか。

お名前: コメント:

Headerの一部を右寄せに - あらき (2009年12月11日 12時32分25秒)

Header(Header_ではなく)の一部を右寄せにしたいのですが、どのようにすればいいのかわかりません。例として、http://www.roren.net/shidai/の右上にある、「開く/隠す」のようにしたいのですが。

  • どのレベルで実現するか、によって色々方法がありますが。単純に特定の文字だけなら、BugTrack-plugin/43使うとかかな。 - 通りすがり (2009年12月17日 17時24分14秒)
{{div class,partedit,ほげほげ}}
{{div style,text-align:right,うじゃうじゃ}}
  • ↑みたいに書けます。 - 通りすがり (2009年12月17日 18時28分41秒)
  • ありがとうございました。さっそくやってみます。 - あらき (2009年12月19日 00時22分16秒)
お名前: コメント:

@pages にFSwikiをインストールできません - kumazaku1 (2009年11月20日 19時21分45秒)

@pagesにFSWikiの3.6.3.1をインストールしようとしたところInternal sever Errorになるので、check.cgiで調べたところ次のようなエラーが出てきます。FSwiki_liteならば動くようです。

Check: wiki.cgi 
サーバーのPerlのパス	/usr/local/bin/perl 
スクリプト中のPerlのパス	#!/usr/local/bin/perl
スクリプト中のパスの適否	スクリプト中のパスは 正しい ようです
パーミッション	OK(実行権限あり)
文法チェック
Use of implicit split to @_ is deprecated at lib/Wiki.pm line 1621.
euc not supported at wiki.cgi line 30
Compilation failed in require at wiki.cgi line 30, <DATA> line 855.
BEGIN failed--compilation aborted at wiki.cgi line 30, <DATA> line 855.
実行結果
euc not supported at wiki.cgi line 30
Compilation failed in require at wiki.cgi line 30, <DATA> line 855.
BEGIN failed--compilation aborted at wiki.cgi line 30, <DATA> line 855.
  • JcodeモジュールがEncodeモジュールを必要としているために起きてるエラーのような気がします。 - localnosie (2010年09月07日 11時54分40秒)
  • 鯖側にJcodeが存在していることが原因の模様。Fswikiに含まれるJcode削除でこの問題は解決のはず。チェックは適当なCGIいじってuseをテスト。ただ、Wiki::HTMLParserのuseでOut of Memory!(FSWiki3.6.4@utf8改悪。IISでは動作してるんですけれどね・・・) - localnosie (2010年09月07日 20時32分36秒)
  • 補足。環境変数を出力するだけのものに、Jcode,CGI2,Wikiをuseしただけの状態でテスト。その後、Wikiを内部でuseしているものに変えるなどしてテスト。プロセス占有メモリの限界? - localnosie (2010年09月07日 21時17分05秒)
お名前: コメント:

バージョンアップがうまくいきません - あらき (2009年11月16日 00時44分34秒)

FreeStyleWiki3.6.2からFreeStyleWiki3.6.3にバージョンアップしました。Readme にあるとおりの方法でやってみたのですが、〜〜〜プラグインは存在しません。と出てきます。そして、ページの見栄えもデフォルトのものになっています。管理画面から、もう一度プラグインを設定してみましたが、同じことでした。どうすればいいのかわかりません。お助けください。

  • 以前動いていたのであれば、ファイルのアップロードがすべて正常にできたか。→ファイルのボリュームを確認。パーミッションは適正かどうか。→setup.cgiで確認 のあたりをやるしかないような気がします。 - 名無しさん (2009年11月16日 09時30分06秒)
  • 了解しました。setup.cgi 便利そうですね。やってみます。 - あらき (2009年11月17日 18時24分49秒)
お名前: コメント:

総ページ数の数え方 - あらき (2009年11月02日 00時28分15秒)

wiki のページ数が多くなり、一体何ページになるのか数えたいのですが、エディターにソースをコピペして、<li>を検索置き換えして、その数を数えています。他に楽な方法はないでしょうか?

  • BugTrack-plugin/227:ページ数を表示するプラグイン」っていうのがあるみたいですよ。今回のようなご質問の場合には、まずは「プラグイン投稿」のページをいろいろとページ内検索(ブラウザの機能)してみるとよいかもしれません。 - 774 (2009年11月02日 01時05分05秒)
  • 情報、ありがとうございました。おかげさまでうまくいきまいした。 - あらき (2009年11月08日 20時22分31秒)
お名前: コメント:

ログイン出来ない/ログイン後セッションがすぐ切れてしまう - Ans (2009年10月23日 18時14分22秒)

利用Version:3.6.3
設定:ソースをそのまま展開し、setup.datのサーバ名だけ変更
(ユーザはadminのみ、admin以外は閲覧のみ)
配置サーバ:Infoseekのレンタルスペース(ライト版)
配置方法:ディレクトリおよびファイルは777のパーミッション(事情により777です)

症状:
初期ユーザである「admin」でログインするのですが
ログイン後、管理画面が表示されず、再びログイン画面が表示されます。

または

初期ユーザである「admin」でログインが管理画面や編集画面が表示されるが、突然セッションが切れ、再度ログインが必要になる。

調べてみたこと

・ブラウザのcookieの有効の有無
>>有効になっている
・ブラウザのキャッシュクリアや設定のクリア
>>クリアしても変わらない
・Firefox、IE、Opera等の複数のブラウザでの動作
>>どれも同じ動作

気になる点

Wikiのディレクトリを色々と見ていたら、log配下にあるcgisess〜ファイルが沢山出来ていました。
セッションファイルと判断して、一度全て削除
その後、ログイン処理をすると220バイトと0バイトのファイルが出来ていました。
尚、ログイン処理を行うたびにファイルが作成されているみたいです。

利用しているユーザは私ひとりであり、他には誰も居ません。
Wiki.cgiまでのパスも暫定で乱数ディレクトリの配下にありますので知らない誰かが利用している可能性はないと思います。

何か解決策や調査する部分はありますでしょうか。
よろしくお願いします。

補填:
ちなみに当Wikiは一度別のInfoseekスペースから移動しています。
移動方法はWikiディレクトリを丸ごとダウンロードして、再度アップロードする際に777であげています。
この方法は3度目で、1度目2度目ではこのような現象は起きていません。
  • 簡単にできるところから順に確認してゆきましょう。まず最初に、 BBS-サポート掲示板/813:正しいID、passでログイン画面がループする の事例にあるように、サーバもしくはクライアント(ブラウザを実行している PC)の時計がずれていたりはしませんか? - 菜梨 (2009年10月23日 21時19分34秒)
  • ご回答ありがとうございます。サーバ側はインフォシーク側なのでPerlで確認してみました。結果、時間はコンマ単位でずれてはいましたが、大丈夫でした。 - Ans (2009年10月24日 13時50分28秒)
  • なるほど、OK ですね。では次に、添付ファイル Login.pm.20091024.with_session_check(717) をダウンロードし、Login.pm にファイル名を変更して plugin/admin/Login.pm と差し替えた上で、ログインしてみて下さい(元の plugin/admin/Login.pm は、念のため別名保存しておきましょう)。 - 菜梨 (2009年10月24日 14時26分09秒)
  • FSWiki のログイン処理の概略は下記のようになっており、本件では「IDもしくはパスワードが違います」エラーが出ていないので、「id, passwd チェック」はクリアしていると思われます。すると、session 処理中に何かエラーが起きているのではないかと予想されます。 - 菜梨 (2009年10月24日 14時26分10秒)

FSWiki のログイン処理の概略

    • id, passwd チェック
    • session 処理
      • session 生成
      • id, type, path を session に記録
      • session を session file (./log/cgisess_*) へ保存
    • リダイレクト
  • 添付した Login.pm.20091024.with_session_check(717) は、「session 処理中にエラーがあれば、メッセージを出して停止する」という処理を追加してあります。具体的な変更点は次の通りです。 - 菜梨 (2009年10月24日 14時26分11秒)
--- Login.pm.orig       2009-01-04 10:11:03.000000000 +0900
+++ Login.pm    2009-10-23 23:21:38.000000000 +0900
@@ -38,10 +38,16 @@ sub do_action {
                        my $login = $wiki->login_check($id,&Util::md5($pass,$id));
                        if(defined($login)){
                                my $session = $cgi->get_session($wiki,1);
+                               if (not defined $session) {
+                                       die "Session is not defined.";
+                               }
                                $session->param("wiki_id"  ,$id);
                                $session->param("wiki_type",$login->{type});
                                $session->param("wiki_path",$login->{path});
                                $session->flush();
+                               if ($session->error() ne q{}) {
+                                       die $session->error();
+                               }
                                $wiki->redirectURL($wiki->create_url({action=>"LOGIN"}));
                        } else {
                                return $wiki->error("IDもしくはパスワードが違います。");
  • 変更してみました。 - Ans (2009年10月24日 14時50分44秒)
Software Error:

Couldn't get LOCK_EX: No record locks available at lib/Wiki.pm line 578. at lib/Util.pm line 679. 

上記のエラーが表示されています。Session is not defined.という表示はまだ出ておりません。修正した内容も記載します。

		# ログインの判定 
		my $id   = $cgi->param("id");
		my $pass = $cgi->param("pass");
		if($id ne "" && $pass ne ""){
			my $login =  $wiki->login_check($id,&Util::md5($pass,$id));
			if(defined($login)){
				my $session = $cgi->get_session($wiki,1);
#▼--Adding-2009/10/24-----------------------------------------▼
				if (not defined $session) {
					die "Session is not defined.";
				}
#▲--Adding-2009/10/24-----------------------------------------▲
				$session->param("wiki_id"  ,$id);
				$session->param("wiki_type",$login->{type});
				$session->param("wiki_path",$login->{path});
				$session->flush();
#▼--Adding-2009/10/24-----------------------------------------▼
				if ($session->error() ne q{}) {
					die $session->error();
				}
#▲--Adding-2009/10/24-----------------------------------------▲
				 $wiki->redirectURL($wiki->create_url({action=>"LOGIN"}));
			} else {
				return $wiki->error("IDもしくはパスワードが違います。");
			}
		}

数回試してみます。

  • エラー「Couldn't get LOCK_EX」 が出ることから、flock() に失敗しているようです。サーバのシステムによっては、flock() ができないことがあるようで、過去の事例としては次のようなものがあります。直近の対策としては、下記事例の BBS-サポート掲示板/368 に記載があるように、lib/CGI/Session/File.pm の flock() 関連箇所をコメントアウトすれば動きそうですね。 - 菜梨 (2009年10月24日 15時31分36秒)
    • 使用している perl の flock() がそもそも動かない(Windows 98 用 perl など。事例 BBS-サポート掲示板/368)。
    • setup.dat で指定したログフォルダ log_dir (default の場合、./log) のあるファイルシステムが NFS である場合(おそらく該当すると思われる事例 BugTrack-wiki/321)。
  • ご回答がありがとうございます。flockのコメントアウトを該当箇所を行いました。500エラー返すようになったのでちょっとflockを他にしようしていないか。処理の流れをみてみます。また、Infoseekは以前Solarisを利用してた記述をどこかで見たような気がします。NTFSではないと思われます。 - Ans (2009年10月24日 20時07分23秒)
  • エラー「Couldn't get LOCK_EX」の発生は一度起きると継続的に発生しているようですが、1時間経過後利用してみると発生していません。また、ログイン処理を普通どおりに行えるのですが・・・やはり突然セッションが切れる状態となり、原因箇所の判別が困難となっております。 - Ans (2009年10月24日 20時11分10秒)
  • NFSNTFS は全くの別物です。:-) - 菜梨 (2009年10月24日 21時22分36秒)
  • 当方で確認したところ、lib/CGI/Session/File.pm の flock() 関連処理をコメントアウトしただけでは 500 エラーは出ないようです。添付ファイル File.pm.20091024.no_flock(815) を試してみていただけますか? - 菜梨 (2009年10月24日 21時31分22秒)
  • 少し話が戻ってしまいますが、エラーメッセージ「No record locks available」をググッたところ、次のような記述を見つけました。この説明と、本現象が「時限的であること」は符合する感じですね。もし、同じサーバ屋さんの別サーバでこの問題が出ないのならば、サーバの設定や、同じサーバを共有している他のユーザのサーバ使用状況に依存するのかもしれません。根本原因を取り除くには、一度サーバ屋さんに問い合わせる(「No record locks available」が時限的に出ることを説明する)のが正攻法かもしれませんね。 - 菜梨 (2009年10月25日 10時07分53秒)
    • No record locks available
      • [原因]:レコードロックを使用できません。システムのロックテーブルがいっぱいです。
      • [対処方法]:使用可能なロックが増えるまで待ってから、もう一度実行してください。
      • [テクニカルノート]:このエラーの記号名は、ENOLCK、errno=46 です。プロセスが F_SETLK または F_SETLKW オプションによって fcntl(2) を呼び出し、システムの上限を超えた可能性があります。システムには、fcntl(2)、NFS ロックデーモン、メールロッキングを含む複数の異なるロッキングサブシステムがあります。すべてのサブシステムでこのエラーが発生する可能性があります。

引用元:Solaris 8 System Administrator Collection - Japanese > 主要メッセージの手引き

  • ご返答ありがとうございます。以下調査してみたものです。 - Ans (2009年10月25日 10時57分57秒)
そもそもなぜ今までどおりにやったのに出来なくなったのか。
原因を調査すべく、前の領域にそっくりそのまま戻してみました。
結果、何度ログインしなおしても正常動作してますし、編集や閲覧、添付なども問題なく可能です。

【今回の環境と前回の環境の違い】

今回:
外部メール(Infoseekドメインじゃないメール)でiswebを利用しています。
空き容量は50MB中45MB程度
wiki.cgiまでの階層数は4階層(/cgi-bin/wiki/XXXX/YYYY/wiki.cgi)
前述どおり、777パーミッションで配置
前回:
Infoseekドメインのメールでiswebをそのまま利用
空き容量は50MB中45MB程度
wiki.cgiまでの階層数は4階層(/cgi-bin/wiki/XXXX/YYYY/wiki.cgi)
前述どおり、777パーミッションで配置

今回と前回の違う要因はiswebを利用するまでの経緯が外部メール登録によるものか。Infoseekメールによる登録かの違いだけ。

尚、初期設定からやり直してみると。(再度Fswiki3.6.3をダウンロード後、配置)

今回利用している領域:
同様の現象が発生し、ログインも出来ない状態になる(IDパスが違いますは出ない)
前回利用している領域:
なんのエラーも発生せずに利用可能、通常どおりの動作が行えた

結論

菜梨さんが言われているとおり、サーバの設定の違いか利用環境の違いで発生しているみたいです。これではソースをデバッグしたとしても根本的な解決には至らないと思えます。また、言われていたNFS(NTFSと読み違えてました。すいません)の可能性も十分ありえると思えます。

NFSかもしれないと思う理由は長年Infoseekを利用していますが、これといってサーバ拡張のメンテナンスを見たことがありません。ということは領域を拡張する際に外部領域をマウントして拡張しているかも?と思ったからです。FTPでの配置でftp.isweb.infoseek.co.jpへ毎度つなげていますが、このサーバのアドレスが変更された覚えは無いですし、出来た当初からこのアドレスに対してUPLOADしています。(まぁ、内部的に変更している可能性も高いのでなんともいえないのですが)

以上、私からの調査事項です。flockのソースを切り替えてみます。また、ご指定されたURLも参考に色々調べてみます。

  • flockの切り替え終わりました。現状は当問題は発生していません。 - Ans (2009年10月25日 11時22分42秒)
ソースの違い
use Fcntl (':DEFAULT', ':flock');
この部分をコメントアウトにしているかしていないかの違いでした。
・・・ここもコメントアウトするんじゃなかったんですね^^;
  • File.pm.20091024.no_flock(815) を使用すると問題出なくなったということですね? とりあえずはよかったです。でもこのままだとファイルロックしないので、衝突を起こす可能性があります。そこで、FSWiki のコアが使用しているファイルロック関数 Util::file_lock(), Util::file_unlock() を flock() の代わりに使用するように改造した lib/CGI/Session/File.pm を File.pm.20091025.with_FSWiki_file_lock(709) に添付します。最後にこれを試してみていただけますか? - 菜梨 (2009年10月25日 13時22分45秒)
  • なお、Ans さんの場合は FSWiki 3.6.3 なので問題ありませんが、Util::file_lock(), Util::file_unlock() を使用するので、File.pm.20091025.with_FSWiki_file_lock(709) は FSWiki 3.6.3dev2 以降でしか使えません。オリジナルの File.pm との差分は次の通りです。 - 菜梨 (2009年10月25日 13時24分32秒)

オリジナルの lib/CGI/Session/File.pm と File.pm.20091025.with_FSWiki_file_lock(709) との差分ファイル(556)

--- ../../backup/uploaded/wiki3_6_3_1/lib/CGI/Session/File.pm	2009-01-04 10:11:01.000000000 +0900
+++ lib/CGI/Session/File.pm	2009-10-25 12:41:33.000000000 +0900
@@ -20,19 +20,23 @@ sub store {
     my ($self, $sid, $options, $data) = @_;
 
     $self->File_init($sid, $options);
+    Util::file_lock($self->{_file_path});
     unless ( sysopen (FH, $self->{_file_path}, O_RDWR|O_CREAT|O_TRUNC, 0644) ) {
         $self->error("Couldn't store $sid into $self->{_file_path}: $!");
+        Util::file_unlock($self->{_file_path});
         return undef;
     }
-    unless (flock(FH, LOCK_EX) ) {
-        $self->error("Couldn't get LOCK_EX: $!");
-        return undef;
-    }
+#    unless (flock(FH, LOCK_EX) ) {
+#        $self->error("Couldn't get LOCK_EX: $!");
+#        return undef;
+#    }
     print FH $self->freeze($data);    
     unless ( close(FH) ) {
         $self->error("Couldn't close $self->{_file_path}: $!");
+        Util::file_unlock($self->{_file_path});
         return undef;
     }
+    Util::file_unlock($self->{_file_path});
     return 1;
 }
 
@@ -47,18 +51,21 @@ sub retrieve {
         return undef;
     }
     
+    Util::file_lock($self->{_file_path});
     unless ( sysopen(FH, $self->{_file_path}, O_RDONLY) ) {
         $self->error("Couldn't open $self->{_file_path}: $!");
+        Util::file_unlock($self->{_file_path});
         return undef;
     }
-    unless (flock(FH, LOCK_SH) ) {
-        $self->error("Couldn't lock the file: $!");
-        return undef;
-    }
+#    unless (flock(FH, LOCK_SH) ) {
+#        $self->error("Couldn't lock the file: $!");
+#        return undef;
+#    }
     my $data = undef;
     $data .= $_ while <FH>;
     
     close(FH);
+    Util::file_unlock($self->{_file_path});
     return $self->thaw($data);
 }
 
  • ソース改修までありがとうございます。検証の結果、正常に利用できているようです。ありがとうございます。 - Ans (2009年10月25日 14時11分49秒)
  • ところで今回の現象はどこに落ちをつけましょうか。回避策は提示してもらったらものでいいかと思えますが・・・Infoseekそのものに原因がるかどうかまで追求したほうがいいのでしょうか。 - Ans (2009年10月25日 14時13分19秒)
  • 確かに、直接原因である「flock() が失敗する場合がある」という現象の発生原因、及び解消法を知りたいところではありますね。 - 菜梨 (2009年10月25日 15時08分40秒)
  • しかし一方では、次のような考え方もできると思います。FSWiki では独自で用意したファイルロック関数 Util::file_lock(), Util::file_unlock() を基本的には使用しているのですが、「標準添付のものも含む外部モジュール内までは Util::file_lock(), Util::file_unlock() の使用が適用されていないので flock() との併用になっている」というのが現状なので、これを「FSWiki 内のファイルロック全てを Util::file_lock(), Util::file_unlock() で統一する」という考え方を採ると、File.pm.20091025.with_FSWiki_file_lock(709) は単なる回避策ではなくなります。 - 菜梨 (2009年10月25日 15時09分12秒)
  • ただし、注意しなければならないのは、「flock() が失敗する場合がある環境において、Util::file_lock(), Util::file_unlock() を用いて本当に正しく排他制御ができるのか」についてはテストされている訳ではないので、今後問題がないかどうかは運用しながら注視していただく必要があるかと思います。とはいえ、FSWiki の別の部分では Util::file_lock(), Util::file_unlock() を既に使用しており問題が無いことから、目に見える不具合は無いと思いますが。 - 菜梨 (2009年10月25日 15時10分06秒)
  • なるほど。では、とりあえず、Infoseekで同様の問題が発生した場合、今回の修正にて対応するようにして。原因究明の材料としてIDの作成環境やサーバの利用環境、できれば現象の採取および保存をしたがよさそうですね。 - Ans (2009年10月26日 09時55分18秒)
  • また、排他制御のテストにおいてもこの対処を行ったユーザの経過を見ることで「とりあえず」的な検証は行えるかと思えます。当方にて同時編集など排他制御のテストを軽くやってみるつもりです。(どこまで出来るかは不明ですが^^;) - Ans (2009年10月26日 09時55分52秒)
  • 追記で、外部メールによるisweb領域取得にて発生するのかどうかの検証も行います。検証結果はここへ追記していきますのでお暇がありましたら、一見してくれたら幸いです。 - Ans (2009年10月26日 09時58分27秒)
  • 楽天ID取得>Infoseekメールアドレス取得>Isweb領域作成>FSWiki3.6.3設置(パーミッション777)でログインが出来ない不具合が発生します。 - Ans (2009年10月31日 14時51分30秒)
  • Infoseekさんへの質問が帰ってきましたので掲載します。 - Ans (2009年11月04日 10時56分34秒)

質問内容:

Infoseek isweb について質問です。
最近、別にIDを取得後、今までInfoseek isweb で動作していたCGIをそっくりそのまま移動させました。
過去、2度程同じような手法でCGIを丸ごと移動させ、問題なく稼動していたのですが今回はCGIの方でエラーが発生し、動作しません。
色々調べてみると、まったく同じCGIを同じディレクトリ構造の同じ場所においても動作する方と動作しない方があります。
動作する方は2年ほど前に作成したスペースですが、動作しない方は最近作成したスペースです。
何かサーバの設定が異なっているのでしょうか。
サーバ拡張やディスク拡張でNFS等を利用した部分にユーザディレクトリを作成していませんでしょうか?
ご返答お願いします。

動作する方:
[isweb id] ************
動作しない方:
[isweb id] ************

この二つのIDのスペースが違う環境に置かれてないでしょうか。
よろしくお願いします。

回答:

インフォシーク ユーザサポートです。
平素はインフォシークをご利用いただき、誠にありがとうございます。

お問い合わせの件でございますが、
iswebでは特にサーバ環境の変更等は行っておらず、
今までご利用いただいておりました動作環境と同じ条件で
ご利用いただいております。

なお、大変申し訳ございませんが、
iswebではCGIの作成並びに、CGIに関するサポートは行っておりません。
お問い合わせいただきながら、恐縮ではございますが、
何卒ご理解ご了承くださいますようお願い申し上げます。

今後ともインフォシークをよろしくお願いいたします。
  • Infoseekの回答では環境に違いは無いということですが、実際同じものを同じように配置しても現状の新規IDで作成したiswebスペースにFswikiを設置しても動作しません。対処方法としてはやはり現状では File.pm.20091025.with_FSWiki_file_lock(709) を利用するしかないようです。 - Ans (2009年11月04日 11時03分15秒)
  • 横から失礼いたします。大学のサーバーで同様の症状が生じましたので、File.pm.20091025.with_FSWiki_file_lockを適用したところ、解決いたしました。環境の詳細に関しては感知しておりませんが、infoseek以外でも同様の症状が発生し、同様の方法で解決できる例として報告させていただきます。 - TEL (2010年07月07日 14時02分51秒)
  • お二方の丁寧なやり取りがなければ私も困ったままだったと思います、この場を借りて御礼申し上げます。 - TEL (2010年07月07日 14時03分46秒)
お名前: コメント:

wiki.cgiにMemory holeがあり3GB消費 - だるま (2009年10月17日 23時50分38秒)

保存できなかったのでこちらに書きました。http://sites.agorian.com/?q=book/export/html/465

  • 肝心のperlのバージョンが、入ってないようですけども・・ - 通りすがり (2010年03月16日 13時05分12秒)
お名前: コメント:

国立情報学研究所内の設置 - 名無しさん (2009年10月14日 12時08分09秒)

国立情報学研究所http://wwwsoc.nii.ac.jp/の提供している学術団体のウェッブスペースへ設置したいのですが、うまく動きません。cgi設置のディレクトリとhtmlなどを置くディレクトリが分けてあります。通常のperl言語のスクリプトは動くのですが。どなたか、設置経験のある方にアドヴァイスをお願いしたいのですが、いらっしゃいますでしょうか?

  • これとかいかがでしょうか。 - 名無しさん (2009年10月14日 16時36分39秒)
お名前: コメント:

deleteフックでページを取得した場合の挙動 - MRB (2009年09月28日 23時36分28秒)

たびたびお世話になっています。

下記に書いてある通りのことを実現したいのですが、詰まってしまいました。アドバイスをいただければ幸いです。

ページ構造

  • リンク元ページA(ページBへのリンクを記述。ページB?
  • リンク先ページB

プラグインの概要

ページBを削除したタイミングでwiki APIの「process_wiki」を使ってページAのHTMLソースを取得する、deleteフックプラグイン。

なお、リンク元ページAとリンク先ページBは固定ではありません。リンク先ページが削除されたタイミングで、リンク元ページを取得するようなプラグインです。

問題となっている事項

上記プラグインを動作させたとき、取得したページAのHTMLソースでは、ページBへのリンクが通常のリンク(a href〜)であり、ページが存在しない場合のリンク形式(span class="nopage"〜)になっていません。

リダイレクトページが表示されて後、ページAを表示させると「ページが存在しない場合のリンク形式」で表示されています(当然、HTMLソースもそうなっています)。

やりたいこと

リンク先ページが削除されたときにリンク元ページのHTMLソースを取得する。このとき、リンクは「ページが存在しない場合のリンク形式」となっていること。

そこで、2点教えていただきたく。

  1. 実現したいことのために使うフックはdeleteでは無いのでしょうか。
  2. deleteでは無い場合、どの時点で「process_wiki」を使用しHTMLソースを取得すると「ページが存在しない場合のリンク形式」になったHTMLソースを取得できるのでしょうか。
  • 使用するのは delete フックでよいと思います。lib/Wiki/DefaultStorage.pm の save_page() の最後の return の直前に次の一行を追加した場合、症状が改善するか否か試してみていただけますか? - 菜梨 (2009年09月29日 02時20分39秒)
--- ../wiki3_6_3_1/lib/Wiki/DefaultStorage.pm   2009-01-04 10:11:02.000000000 +0900
+++ lib/Wiki/DefaultStorage.pm  2009-09-29 02:14:31.000000000 +0900
@@ -170,6 +170,7 @@ sub save_page {

        rename($tmpfile, $wikifile);
        Util::file_unlock($wikifile);
+       delete $self->{exists_cache}->{":$page"}; # page_exists() のキャッシュをクリア。

        return 1;
 }
  • ありがとうございます。症状の改善を確認できました。本当に助かりました。 - MRB (2009年09月29日 21時47分40秒)
お名前: コメント:

[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 ]

最終更新時間:2011年08月03日 23時16分46秒