Heim > Backend-Entwicklung > PHP-Problem > Was soll ich tun, wenn PHP die COM-Komponente nicht aufrufen kann?

Was soll ich tun, wenn PHP die COM-Komponente nicht aufrufen kann?

藏色散人
Freigeben: 2023-03-17 10:50:01
Original
2268 Leute haben es durchsucht

Lösung für das Problem, dass PHP die COM-Komponente nicht aufrufen kann: 1. Bestätigen Sie die PHP-Version und die erforderlichen Systemtools. 2. Konfigurieren Sie php.ini und aktivieren Sie „com.allow_dcom = true“. 3. Aktivieren Sie die COM-Funktion von PHP Überprüfen Sie, ob „php_com_dotnet.dll“ erfolgreich geladen wurde.

Was soll ich tun, wenn PHP die COM-Komponente nicht aufrufen kann?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 8.1, Dell G3-Computer.

Was soll ich tun, wenn PHP die COM-Komponente nicht aufrufen kann? Fallstrickaufzeichnung der PHP-Referenz-COM-Komponente

Kürzlich ist in den Arbeitselementen ein „Gig-Job“ aufgetaucht. Es ist notwendig, eine Funktion zum vorhandenen PHP-Projekt hinzuzufügen, und das Projekt und das Quellcodeprojekt, die zum Implementieren der Funktion erforderlich sind, sind ebenfalls vorhanden verfügbar. Dieses Buch ist eine sehr einfache Sache. Obwohl ich PHP selten verwende, ist dies nicht der wichtigste „begrenzende Faktor“. Was mir Kopfzerbrechen bereitet, ist, dass die Funktionsbibliothek mit dem .NET-Framework implementiert wird, was relativ kompliziert ist ist kein Handbuch zur funktionalen Logik, schwer in PHP zu kopieren. Daher ist der direkte Verweis auf die dynamische Bibliothek von .NET in PHP zum Schlüssel zur Erledigung der „Aufgabe“ geworden

Viele Senioren im Internet haben dieses Problem aufgezeichnet, konnten es jedoch nicht kopieren ", stoßen Sie auf die Pit-Datensätze und füllen Sie sie aus

Generieren Sie eine dynamische Bibliothek für COM-Komponenten

COM-Komponente (COM-Komponente) ist eine von Microsoft entwickelte Softwareentwicklungstechnologie. Sein Kern besteht aus einigen kleinen ausführbaren Binärprogrammen, die Dienste für Anwendungen, Betriebssysteme und andere Komponenten bereitstellen können. Wenn Sie in PHP auf eine dynamische Bibliothek eines Drittanbieters verweisen möchten, müssen Sie die neue COM-Methode („Component.class“) verwenden. Die Komponente muss eine COM-Komponente sein

1. Erstellen Sie ein Windows-Klassenbibliotheksprojekt Unabhängig davon, um welche Version des Frameworks es sich handelt, sollten Sie das Klassenbibliotheksprojekt auf der Registerkarte „Windows“ finden können. Auf diese Weise befindet sich im Projekt standardmäßig eine Datei „PropertiesAssemblyInfo.cs“, in der die erforderlichen Informationen aufgezeichnet werden das Projekt festgelegt

2. Das Ziel-Framework muss übereinstimmen

Erstellen Sie das Projekt. Sie können das Framework zu diesem Zeitpunkt auswählen

Wenn es sich um eine spätere Anpassung handelt, können Sie es im Ziel-Framework unter Projekteigenschaften > Anwendung ändern

Hinweis dass das Framework bei der späteren Registrierung der DLL konsistent sein muss

3. COM-Komponenten einrichten. Es ist ersichtlich, dass ComVisible in der Datei PropertiesAssemblyInfo.cs wie folgt geändert werden muss

[assembly: ComVisible(true)]
Nach dem Login kopieren

4 Namensschlüssel

Projekteigenschaften> Aktivieren Sie in der Signatur „Assembly signieren“ und klicken Sie gleichzeitig auf „Eine neue Schlüsseldatei auswählen“ und generieren Sie sie dann in der binDebug-Verzeichnis

5. Wenn es eine dynamische Bibliothek gibt, die nicht eingebettet werden kann

Wenn die Projekt-Framework-Version niedriger ist, oder

Der referenzierten Bibliothek fehlen die für die Interoperabilität erforderlichen Funktionen

Kurz gesagt, die referenzierte Bibliothek kann nicht eingebettet werden Eingebettet mit Interoperabilität.

Dann muss die abhängige DLL auch die nachfolgende Registrierung und andere Vorgänge durchführen.

Beteiligt. Es gibt viele Fallstricke, wenn es um Vorgänge auf Systemebene geht 1. Bestätigen Sie die PHP-Version

Persönlich getestete Version 5.3.22 ist nicht verfügbar, Version 5.4.5 ist verfügbar, also versuchen Sie, Version 5.4 oder höher zu verwenden

Jetzt ist die höchste PHP-Version 8.0, ich weiß nicht, ob das so ist Die Bedienungsmethode ist immer noch dieselbe

2. Bestätigen Sie die erforderlichen Systemtools

Sie benötigen zwei Tools, gacutil und regasm, und beide müssen mit der Framework-Version übereinstimmen

Das heißt, die DLL der generierten COM-Komponente wird verwendet Für welche Version des Frameworks müssen Sie hier auch die entsprechende Version des Tools verwenden? Normalerweise verfügt das Windows-System definitiv über das integrierte Regasm-Tool ein 64-Bit-System, dann im Framework64-Verzeichnis. Andernfalls verwenden Sie das Framework-Verzeichnis und wählen Sie die Versionsnummer aus, die dem Framework-Framework entspricht. Dort sollten Sie die Datei RegAsm.exe finden. Das Tool gacutil ist in Windows enthalten Wenn es nicht installiert wurde, können Sie es von der offiziellen Website herunterladen. Nach der Standardinstallation lautet der Pfad des Tools für Versionen unter Frameworkd 4.0:

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe
Nach dem Login kopieren

3. Konfigurieren Sie php.ini

und aktivieren Sie com.allow_dcom = true

Stellen Sie sicher, dass sich php_com_dotnet in Ihrem extension_dir-Verzeichnis befindet

Öffnen oder fügen Sie extension=php_com_dotnet.dll hinzu

4 DLL

Nehmen Sie als Beispiel das 64-Bit-System, Version 4.0 my.dll

Kopieren Sie die in der ersten Partei generierte DLL nach c:ProgrammeMicrosoft SDKsWindowsv7.1BinNETFX 4.0 Tools

Gehen Sie in das Verzeichnis c:ProgrammeMicrosoft SDKsWindowsv7. 1BinNETFX 4.0 Tools und führen Sie gacutil /i my.dll aus. Gehen Sie in das Verzeichnis C:WindowsMicrosoft.NETFramework64v4.0.30319 und führen Sie regasm my.dll aus als Beispiel

Gehen Sie in das Verzeichnis C:WindowsMicrosoft.NETFramework64v4.0.30319 und führen Sie regasm my.dll /unregister aus

Gehen Sie in das Verzeichnis c:Program FilesMicrosoft SDKsWindowsv7.1BinNETFX 4.0 Führen Sie gacutil /u my

php unter Tools aus Rufen Sie die COM-Komponente auf

Nachdem der obige Inhalt korrekt konfiguriert ist, können Sie ihn in der PHP-Datei aufrufen. Die Methode lautet wie folgt: Wenn

rreee

Sie auffordert, dass keine COM-Methode vorhanden ist, müssen Sie prüfen, ob dies der Fall ist aktiviert. Die COM-Funktion von PHP oder ob php_com_dotnet.dll erfolgreich geladen wurde

Es wird angezeigt, dass es keine Methode zum Aufrufen der DLL gibt oder die DLL nicht registriert ist. Sie müssen prüfen, ob die DLL-Datei erfolgreich registriert wurde

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn PHP die COM-Komponente nicht aufrufen kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage