array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'faq.com.php', 1 => 'PHP と COM', ), 'up' => array ( 0 => 'faq.php', 1 => 'FAQ', ), 'prev' => array ( 0 => 'faq.html.php', 1 => 'PHP と HTML', ), 'next' => array ( 0 => 'faq.misc.php', 1 => 'その他の質問', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'faq/com.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
PHP は Win32 プラットフォーム上で COM と DCOM オブジェクトに アクセスすることができます。
もしそれが普通の DLL なら、現在のところ PHP からそれを実行する手段は ありません。DLL が COM サーバーを含んでいて IDispatch インターフェイスが 実装されている場合、PHP からアクセスすることができます。
多くの VARIANT タイプとその組み合わせがあり、そのほとんどは サポートされていますが、残りのいくつかは未だ実装されていません。 また配列も完全にサポートされているわけではなく、PHP と COM の間で 受け渡しが可能なのは 1 次元の添字付配列のみです。もしこの他に サポートされていないタイプを見つけた場合は(既知でなければ)、 できる限りの情報を添えてバグとして報告してください。
基本的には可能です。しかし PHP はほとんどの場合ウェブスクリプティングの 言語として使用されウェブサーバー上で実行されるため、ビジュアルオブジェクトが サーバーのデスクトップに現れることはありません。もし PHP を アプリケーション作成に使用する、すなわち PHP-GTK と合わせて 使用する場合にはアクセスに制限はありません。COM を通じて ビジュアルオブジェクトを操作することができます。
できません。COM インスタンスはリソースとして扱われるため、1 つの スクリプトを実行している間のみ使用可能です。
COM 拡張モジュールは com_exception
例外をスローします。これをキャッチし、code
メンバを調べることで次にすべきことを決定できます。
いいえ、残念ながら PHP にはそのようなツールはありません。
このエラーが発生する理由はいくつかあります。
ローカルオブジェクトを実行するのと全く同様です。ただ、COM コンストラクタの 2 番目のパラメータにリモートマシンの IP アドレスを 渡すだけです。
php.ini に
com.allow_dcom=
true
をセットするのを忘れないでください。
php.ini を編集して
com.allow_dcom=
true
.
としてください。
これは PHP とは関係ありません。ActiveX オブジェクトは、HTML ドキュメントから要求があった場合にクライアント側でロードされます。 PHP スクリプトとは関係が無く、従ってサーバー側と直接やりとりすることも できません。
モニカーを使用すれば可能です。同じ Word インスタンスに対して複数の 参照を取得したい場合は、以下のようにしてインスタンスを生成します。
<?php $word = new COM("C:\docs\word.doc"); ?>
こうすれば、実行中のインスタンスが無い、もしくはインスタンスの 取得が不可能だった場合には新規に生成され、インスタンスが取得できた 場合にはそのハンドルを返します。
イベントシンクを定義し、com_event_sink() を使用してそれをバインドすることが可能です。PHP でイベントシンククラスの 雛形を作成するために com_print_typeinfo() を 使用することが可能です。
この問題に対する答えは、簡単ですが残念なものです。正確には わかりませんが、おそらく打つ手はありません。もしこの問題に関する 具体的な情報があったら» 私 に教えてください。
COM+ とは MTS(Microsoft Transaction Server) と MSMQ(Microsfot Message Queue Service) を通じてコンポーネントを操作する フレームワークによって COM を拡張したものです。が、PHP がそういった コンポーネントをサポートするにあたって特別に必要なことはありません。
PHP それ自体はまだトランザクションをサポートしていません。従って エラーが発生してもロールバック処理は行われません。もし トランザクションをサポートするコンポーネントを使用する場合は、 自分でトランザクション処理を実装する必要があります。