[PHP-users 8867] Re: PHP4.1.2 on Apache for WIn 32上でのCOM関数の利用について

Moriyoshi Koizumi php-users@php.gr.jp
Tue, 23 Jul 2002 18:35:51 +0900


小泉@町田です。

あまりお役に立てませんが。

まず、w2k + Apache 2.0.36 + php4.2.1(モジュールとして) + Word 2000
では実行できました。(ちなみにテストサーバ上です)

ひとまずphp のバージョンを上げてみるといい結果が得られるかもしれません。

あと、これは経験的な話なのですが、
OLEサーバ(この場合はWord)が既に起動していて、何かの理由でハングアップして
いて、その状態でもう一度起動させようとすると、サーバーを実行できない旨のエ
ラーが出ることがあるようです。

VB / ASP 関係のページの方が、OLE 関係の情報が充実しているので
そちらを当たってみてはいかがでしょうか?
"CreateObject" を "new COM" に置換するだけで動くようなサンプルも
多いと思いますので。
(実際には変数名に "$" つけたりしなくてはいけませんが。)

# COM 関係の質問って、皆さん "PHPに関係ありません" と言い出そうとして
# 口を押さえているような気がする…。

"Hisaji ONO" <hi-ono@mn.xdsl.ne.jp> wrote:

>  はじめまして、尾野と申します。
> 
>  PHPをやりはじめて、かれこれ、1年です。
> 
>  件名のCOM関数について、伺いたいのですが。
> 
>  PHPのオンライン・マニュアルにある以下のサンプルプログラムを実行させたの
> ですが。
> 
> <?
>  $word = new COM("word.application") or die("Can't start Word!");
>  $word->Visible = 1;
>  $word->Documents->Add();
>  $word->Selection->Font->Name("Verdana");
>  $word->Selection->Font->Bold();
>  $word->Selection->TypeText($text);
>  $word->Documents[1]->SaveAs("d:\temp\test.doc");
>  $word->Quit();
>  $word->Release();
>  $word = null;
> ?>
> 
>  次のエラーが出てしまいました。
> 
>  Warning: Unable to obtain IDispatch interface for CLSID
> {000209FF-0000-0000-C000-000000000046}: サーバーの実行に失敗しました in
> c:\Program Files\Apache Group\Apache\htdocs\comtest.php on line 2
> 
> Fatal error: Maximum execution time of 30 seconds exceeded in c:\Program
> Files\Apache Group\Apache\htdocs\comtest.php on line 2
> 
>  私の環境は以下の通りです。
> 
>  OS:WindowsNT4.0 Server SP6a
>  WWWサーバ:Apache1.3.6
>  PHP4.1.2:CGI-BINで利用
>  MSWORD2000
> 
>  どなたか、できましたら、上の対策方法をご教授ください。