[PHP] Fatal error: Class ‘COM’ not found in ~ について

あの環境では動くのに、この環境では動かないって事あると思います。


私の場合、こんなエラーでした。

Fatal error: Class 'COM' not found in hoge.php on line 42

「COMっていうクラスが見つからない」って言われてますね。

調べてみると以下のようなページを発見。

インストール手順
PHP 5.3.15 / 5.4.5 以降は、php_com_dotnet.dll を php.ini で有効にしておかないとこれらの関数を使えないようになりました。 それまでのバージョンの PHP では、この拡張モジュールがデフォルトで有効になっていました。
使いたい COM オブジェクト (MS Word など) は別途インストールしておかないといけません。 そういった COM オブジェクトは PHP にバンドルされていませんし、 そもそもバンドルできません。

『PHP 5.3.15 / 5.4.5 以降は、php_com_dotnet.dll を php.ini で有効にしておかないとこれらの関数を使えないようになりました。』だと…。
それじゃ有効にしようじゃないか…。では、どうすればいいのか…。

解決方法

間違い
色々と検索してみると、

[COM_DOT_NET]
extension=php_com_dotnet.dll

こんな風に追加しろみたいな事が書かれていますが、これでは有効にできません

[2012-12-20 12:29 UTC] David dot Gausmann at measX dot com
This ticket has already been closed…
The error in your configuration is the “[COM_DOT_NET]”.
The “extension=php_com_dotnet.dll” entry should belong to the “[PHP]” section.
If you write them under different sections (such as “[COM_DOT_NET]”) PHP won’t load these extensions.

上記の通り、 “[COM_DOT_NET]“じゃなくて”[PHP]” のセクション内に書きましょう。

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;

のあたりに extension=php_hoge.dll みたいなのが沢山書かれてあるのでその辺に追加してやります。

以上。