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.
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)]
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
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 aufNachdem der obige Inhalt korrekt konfiguriert ist, können Sie ihn in der PHP-Datei aufrufen. Die Methode lautet wie folgt: Wenn
rreeeSie 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!