Heim >Backend-Entwicklung >PHP-Problem >So lösen Sie das Fehlerproblem der PHP-COM-Komponente
Lösung für den PHP-COM-Komponentenfehler: 1. Ändern Sie die Konfiguration „com.allow_dcom“ und „php_com_dotnet.dll“ in php.ini. 2. Verwenden Sie vs2013, um COM-Komponenten zu schreiben.
Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP7.1, Dell G3-Computer.
Die Gründe, warum PHP COM-Komponenten nicht laden kann, und ihre Lösungen
Beim Aufrufen von Schnittstellen anderer Programmiersprachen in PHP bin ich persönlich der Meinung, dass die Verwendung von COM-Komponenten am bequemsten ist. Vor Kurzem kam ich mit PHP in Kontakt, als ich den Aufruf von in C++ geschriebenen COM-Komponenten untersuchte und auf den Fehler „COM-Objekt konnte nicht erstellt werden“ gestoßen war.
Höhere PHP-Versionen müssen die COM-Unterstützung manuell aktivieren. Ändern Sie grundsätzlich die Konfiguration in php.ini auf com.allow_dcom = true und extension=php_com_dotnet.dll. Wenn dies der Fehler ist, kann er leicht behoben werden. Tatsächlich denke ich, dass diese Art von Konfigurationsfehlern selten von Leuten gemacht wird, die sagen, dass sie testen können, ob die COM-Komponentenunterstützung normal ist, indem sie WPS- oder Word-Komponenten laden und testen nicht sehr praktisch. Später fand ich in der Dokumentbeschreibung http://php.net/manual/zh/class.com.php $db = new COM("ADODB.Connection",NULL, 65001); Nach dem Testen wurde es normal geladen, zeigt an, dass es ein Problem mit der von mir geschriebenen COM-Komponente gab, und es stellte sich heraus, dass es der Fall war.
Es gab bereits viele Beispiele für das Laden von COM-Komponenten in C++. Dies kann daran liegen, dass die PHP-Version nicht mehr geeignet ist PHP5.2 Wahrscheinlich richtig. Ich verwende PHP5.5 und wurde in die Irre geführt.
Meine PHP-Version ist 5.5.12 und ich verwende vs2013, um COM-Komponenten zu schreiben. Der folgende Prozess ist:
1. Suchen Sie vs2013 in der Startleiste, klicken Sie mit der rechten Maustaste, um es mit Administratorrechten zu öffnen, und öffnen Sie es als ein Administrator, da die COM-Komponente zu einem späteren Zeitpunkt registriert wird. Erstellen Sie ein neues ATL-Projekt in C++,
2, klicken Sie auf Fertig stellen, klicken Sie mit der rechten Maustaste auf das Projekt, um eine Klasse hinzuzufügen, und wählen Sie ATL COM+10 aus.
3. Klicken Sie mit der rechten Maustaste auf das Projekt, um eine Klasse hinzuzufügen. Der folgende Punkt ist der wichtigste: Die ProgID in der unteren rechten Ecke muss manuell hinzugefügt werden. Das Format lautet „Projektname. Abkürzung“. Der Projektname wird beim Laden auch so geschrieben es später in PHP. Das zweite Element ist die Abkürzung, nicht der Klassenname. Wenn diese Stelle falsch geschrieben ist, kann die Komponente zwar erfolgreich registriert werden, wird jedoch in PHP nicht erkannt.
4. Ich werde dies nicht im Detail schreiben. [Empfohlenes Lernen: „PHP-Video-Tutorial“] rrree
5 Registrieren Sie sich als Komponente und starten Sie den Apache-Dienst neu. Im PHP-Skript erfolgt der folgende Aufruf:STDMETHODIMP Ctest::add(LONG a, LONG b, LONG* c) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); // TODO: 在此添加实现代码 *c = a + b; return S_OK; }Beachten Sie, dass das Format von „Komponentenname.Abkürzung“ korrekt ist. Im Online-Beispiel ist es
"Komponentenname.Klassenname". Es kann sich jedoch um ein Versionsproblem handeln. Der Aufruf ist jedoch fehlgeschlagen, als ich ihn so aufgerufen habe.
6, der Browser betritt das Verzeichnis des eigenen PHP-Projekts und zeigt an, dass die COM-Komponente normal geladen wurde. Die COM-Komponente wurde erfolgreich verwendet, um die Ausgabe von 10 plus 2 als 12.
zu erstellen
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Fehlerproblem der PHP-COM-Komponente. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!