ホームページ バックエンド開発 PHPの問題 PHP が COM コンポーネントを呼び出せない場合はどうすればよいですか?

PHP が COM コンポーネントを呼び出せない場合はどうすればよいですか?

Nov 01, 2022 am 10:04 AM
php comコンポーネント

php が com コンポーネントを呼び出せない問題の解決策: 1. php のバージョンと必要なシステム ツールを確認します; 2. php.ini を設定して "com.allow_dcom = true" を有効にします; 3. com を有効にしますphpの関数または「php_com_dotnet.dll」が正常に読み込まれたかどうかを確認してください。

PHP が COM コンポーネントを呼び出せない場合はどうすればよいですか?

このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 8.1、Dell G3 コンピューター。

php が com コンポーネントを呼び出せない場合はどうすればよいですか? PHP リファレンス COM コンポーネントの落とし穴記録

最近、作業項目に「奇妙なジョブ」が出現しました。既存の PHP プロジェクトに機能を追加する必要があり、それに必要なプロジェクトとソース コードが必要です。関数を実装する プロジェクトもありますが、これは非常に簡単です。私は PHP をほとんど使用しませんが、これが最も重要な「制限要因」ではありません。頭の痛いのは、関数ライブラリが .NET Framework を使用して実装されていることです。データ形式には多くの調整があり、比較的複雑です。これは関数ロジックのマニュアルではないため、PHP でコピーするのは困難です。したがって、php で .NET のダイナミック ライブラリを直接参照することが、「タスク」を完了するための鍵となっています。

インターネット上の多くの先輩がこの問題を記録していますが、彼らはひょうたんをコピーすることに失敗しています。この記事は「」にあります。肝臓の奇妙な仕事」 「その過程で、私たちはレコードに遭遇し、記入しました

COM コンポーネント動的ライブラリの生成

COM コンポーネント (COM コンポーネント) は、Microsoft によって開発されたソフトウェア開発技術です。その本質は、アプリケーション、オペレーティング システム、およびその他のコンポーネントにサービスを提供できる、いくつかの小さなバイナリ実行可能プログラムです。 PHP でサードパーティのダイナミック ライブラリを参照する場合は、新しい COM("Component.class") メソッドを使用する必要があり、コンポーネントは COM コンポーネントである必要があります (

1)。 Windows クラスを構築するライブラリ プロジェクト

どのバージョンの Framework であっても、[Windows] タブでクラス ライブラリ プロジェクトを見つけることができるはずです

このようにして、Properties\AssemblyInfo.cs ファイルが作成されます。プロジェクトのデフォルトであり、プロジェクト セットに必要な情報が記録されます。情報

2. ターゲット フレームワークは一致する必要があります

プロジェクトの作成時にフレームワークを選択できます

後で調整する場合は、[プロジェクト プロパティ] > [アプリケーション] でターゲットを選択できます。フレームワークに変更を加えます

後で DLL を登録するときにフレームワークが一貫している必要があることに注意してください

3. COM コンポーネントを表示する

Properties\AssemblyInfo.cs ファイルで、ComVisible を次のように変更します

[assembly: ComVisible(true)]
ログイン後にコピー

4. 署名を設定し、厳密な名前のキーを設定するには

Project [プロパティ]>[署名] で、[アセンブリに署名する] をチェックし、下の [アセンブリに署名する] を選択します。[厳密な名前のキー ファイル]

に新しいキー ファイルを作成して生成し、対応する dll ファイルを見つけます。 bin\Debug ディレクトリ

#5. 埋め込むことができないダイナミック ライブラリがある場合

プロジェクト フレームワークのバージョンが低い場合、または

参照されるライブラリに必要な機能が欠けている場合相互運用性のために、

つまり、参照されたライブラリを相互運用性を備えて埋め込むことはできません

その場合、依存する DLL も後続の登録やその他の操作を実行する必要があります

DLL を登録するサーバー

システム レベルの操作が含まれるため、多くの落とし穴があります...

1. PHP バージョンを確認します

個人的にテストされたバージョン 5.3.22 は利用できません。 5.4.5が利用可能ですので、バージョン5.4以降を使用してみてください

現在phpの最新バージョンはバージョン8.0ですが、今も同じかはわかりません操作方法

2必要なシステム ツールを確認します。

gacutil と regasm という 2 つのツールが必要で、どちらもフレームワークのバージョンと一致する必要があります。

つまり、生成された COM 使用されているフレームワークのバージョンコンポーネントの dll については? ここで、対応するバージョンのツールを使用する必要もあります。

通常、Windows システムには組み込みの regasm ツールが必ずあります。

ディレクトリ パス (例:##) #
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe
ログイン後にコピー

64 ビット システムに適用されている場合は、Framework64 ディレクトリに移動します。それ以外の場合は、Framework ディレクトリを使用して、対応する Framework フレームワークのバージョン番号を選択します。そこに RegAsm.exe ファイルがあるはずです。

gacutil ツールは Microsoft にあります。提供された Windows SDK が含まれています。インストールしていない場合は、クリックして公式 Web サイトからダウンロードできます。

デフォルトのインストール後、ツールはFrameworkd 4.0 より前のバージョンのパス。

C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\gacutil.exe
ログイン後にコピー

バージョン 4.0 が必要な場合は、パス はい、

c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\gacutil.exe
ログイン後にコピー

3。php.ini を設定します。

Enable com.allow_dcom = true

extension_dir ディレクトリに php_com_dotnet.dll ファイルがあることを確認してください

extension=php_com_dotnet.dll

を有効にするか追加します4. DLL のキャッシュと登録

64 ビット システム、バージョン 4.0 の my.dll を例に挙げます。

生成された最初の dll を c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 にコピーします。 Tools\ ディレクトリ

を c:\Program Files\Microsoft SDKs\Windows\v7 ディレクトリに移動します。 .1\Bin\NETFX 4.0 Tools\ の下にある gacutil /i my.dll

を実行して、ディレクトリに移動しますC:\Windows\Microsoft.NET\Framework64\v4.0.30319\ を実行し、regasm my.dll

5. DLL の登録を解除します

#64 ビット システム、バージョン 4.0 my.dll を使用します。例として

ディレクトリ C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ に移動し、regasm my.dll /unregisterを実行します。

ディレクトリ c:\Program に移動します。 Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\ を実行して gacutil /u my

PHP が COM コンポーネントを呼び出します

上記の内容の後にが正しく設定されていれば、PHP ファイルで呼び出すことができます。メソッドは次のとおりです。

$comClass = new COM('namespace.className');
$comClass -> methodName();
ログイン後にコピー
は、COM メソッドが存在しないことを示すプロンプトを表示するため、COM メソッドが有効になっているかどうかを検討する必要があります。php の com 関数、またはphp_com_dotnet.dll が正常にロードされたかどうか

dll を呼び出す方法がないか、dll が登録されていないことを示すメッセージが表示されます。dll ファイルが正常に登録されているかどうかを検討する必要があります。

推奨学習: 「PHP ビデオ チュートリアル」 "

以上がPHP が COM コンポーネントを呼び出せない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles