Namazu-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: インデックス作成時、OLE::WordでCall Methodエラー



竹迫です。

もしかしたら外しているかもしれませんが、、、
ASP から makeindex.bat を実行してしまうと、IIS の実行ユーザ権限 IUSR_*** で
バッチが実行されてしまうため、MS Office が起動に失敗しているのではないかと
思います。

問題切り分けのため、一度マシンを再起動した後、対話ユーザでログインして、
コマンドプロンプトから makeindex.bat を実行した場合の結果はどうなります
でしょうか?

--
 株式会社ドリーム・アーツ
   竹迫 良範 <takesako@xxxxxxxxxx>


Minoru Fujisawa (deneb) <conex@xxxxxxxxxxxxxxxxxxxx> wrote:
>
>■ 環境
>
>namazu v2.0.12
>OS:Windows2000 Server SP3
>WWWServer:IIS
>Perl:v5.6.1 built for MSWin32-x86-multi-thread
>その他:Word2000がインストールされています。
>
>という環境で構築しております。
>
>■ 問題
>
>HTML、PDFのインデックス作成までは出来るのですが、
>Wordのインデックス作成時に以下のようなエラーが出ます。
>
>検索対象のファイルを調べています...
>42個のファイルがインデックス作成の対象として見つかりました
>1/42 - /C|/doc_lib/Other/AS.doc Can't call method "open" on an undefined value at C:/namazu/share/namazu/filter/win32/olemsword.pl line 194.
>
>1/41 - /C|/doc_lib/Other/AutoservNew.doc Can't call method "open" on an undefined value at C:/namazu/share/namazu/filter/win32/olemsword.pl line 194.
>
>1/40 - /C|/doc_lib/Other/Solution_Reporting_Overview.doc Can't call method "open" on an undefined value at C:/namazu/share/namazu/filter/win32/olemsword.pl line 194, <GEN5> line 3.
>
>■ してみた事
>
>内容からolemsword.plに原因がありそうです。
>内容を見ますと、エラーの該当部分は
>
>    my $doc = $word->{Documents}->open({
>		'FileName' => $cfile,
>		'PasswordDocument' => 'dummy password',
>		'ReadOnly' => 1
>	});
>
>の最初の行の場所です。
>(過去のログを見ると、この辺りの部分はパスワード付き文章をうまく
> ハンドルするために修正されてCommitされたもののようですね……)
>
>そこで、この部分をシンプルにしたりなんだりしても駄目でした。
>PerlによるOLEの利用についてもインターネットで色々検索しましたが、
>上記のコードに問題があるとも思えません。
>
>サーバーにはWord2000がインストールされておりますが、
>OLEはPerlのインストールで自動的に利用可能になると言う事なので
>Word2000の状態には関係しないのかなと思っているのですが……。
>
>■ その他
>
>ちなみに、現在はインデックスの作成をASPを使って出来るようにしています。
>
>makeindex.bat
>
>del C:\namazu\var\namazu\index\namazu.htm
>del C:\namazu\var\namazu\index\namazu_err.htm
>perl C:\namazu\bin\mknmz -a -U -O C:\namazu\var\namazu\index C:\doc_lib 1>C:\namazu\var\namazu\index\namazu.htm 2>C:\namazu\var\namazu\index\namazu_err.htm
>
>というバッチファイルを作成し、
>
><%
>response.write "インデックス作成タスクを起動中です。このままお待ち下さい。<br>"
>
>Set WshShell = Server.CreateObject ("WScript.Shell")
>WshShell.Run "C:\WINNT\system32\makeindex.bat"
>Set WshShell = Nothing
>
>response.write "インデックス作成タスクが起動しました。<br>"
>response.write "<a href='http://demo2000/scripts/search/namazu.cgi.exe'>もどる</a>"
>%>
>
>というASPファイルをブラウザから呼び出せるようにしてあります。
>その他に通常はTaskManagerにて毎晩インデックス作成をしております。
>
>CONEX
>