mirror of
https://github.com/php/doc-de.git
synced 2026-03-23 23:02:13 +01:00
305 lines
8.7 KiB
XML
305 lines
8.7 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: e0352653179c355a6b9c353629147b06a2069f24 Maintainer: nobody Status: ready -->
|
|
<chapter xml:id="faq.com" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>PHP und COM</title>
|
|
<titleabbrev>PHP und COM</titleabbrev>
|
|
|
|
<para>
|
|
PHP kann auf Win32-Plattformen benutzt werden, um auf COM- und DCOM-Objekte
|
|
zuzugreifen.
|
|
</para>
|
|
|
|
<qandaset>
|
|
<qandaentry xml:id="faq.com.q1">
|
|
<question>
|
|
<para>
|
|
Ich habe eine DLL-Datei erstellt, um etwas zu berechnen.
|
|
Kann ich diese DLL-Datei auch in PHP benutzen?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Wenn es eine einfache DLL-Datei ist, gibt es noch keinen Weg diese auch
|
|
in PHP zu benutzen. Wenn die DLL-Datei aber einen COM-Server enthält,
|
|
können Sie diese möglicherweise benutzen, wenn sie das
|
|
IDispatch-Interface implementiert.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q2">
|
|
<question>
|
|
<para>
|
|
Was bedeutet "Unsupported variant type: xxxx (0xxxxx)"?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Es gibt dutzende VARIANT-Typen und -Kombination. Die meisten werden
|
|
bereits unterstützt, aber es gibt immer noch einige, die noch
|
|
implementiert werden müssen. Arrays werden zum Beispiel noch nicht
|
|
vollständig unterstützt. Nur eindimensional indexierte Arrays können
|
|
zwischen PHP und COM ausgetauscht werden. Wenn Sie andere Typen finden,
|
|
die nicht unterstützt werden, melden Sie diese bitte als Bug (wenn sie
|
|
nicht schon gemeldet wurden) und stellen so viele Informationen zur
|
|
Verfügung wie möglich.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q3">
|
|
<question>
|
|
<para>
|
|
Ist es möglich, visuelle Objekte in PHP zu verändern?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Generell ja, aber da PHP normalerweise als Web-Skriptsprache verwendet
|
|
wird, läuft es im Webserver-Kontext, also werden visuelle Objekte niemals
|
|
auf dem Desktop des Servers erscheinen. Wenn Sie PHP für
|
|
Anwendungsskripting benutzen, zum Beispiel in Verbindung mit PHP-GTK,
|
|
gibt es keine Limitation bei Zugriff und Veränderung von visuellen
|
|
Objekten durch COM.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q4">
|
|
<question>
|
|
<para>
|
|
Kann ich ein COM-Objekt in einer Session speichern?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Nein, können Sie nicht. COM-Instanzen werden als Ressourcen behandelt und
|
|
können somit nur im Kontext eines einzelnen Skripts benutzt werden.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q5">
|
|
<question>
|
|
<para>
|
|
Wie kann ich COM-Fehler abfangen?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Die COM-Erweiterung wirft eine <literal>com_exception</literal>, die Sie
|
|
abfangen und dann das <literal>code</literal>-Member inspizieren können,
|
|
um zu bestimmen, wie fortzufahren ist.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q6">
|
|
<question>
|
|
<para>
|
|
Kann ich DLL-Dateien aus PHP-Skripten wie in Perl generieren?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Nein, leider gibt es kein Tool, das für PHP verfügbar ist.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q7">
|
|
<question>
|
|
<para>
|
|
Was bedeutet "Unable to obtain IDispatch interface for CLSID
|
|
{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Dieser Fehler kann mehrere Gründe haben:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<simpara>
|
|
Die CLSID ist falsch
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Die angeforderte DLL-Datei fehlt
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Die angeforderte Komponente implementiert das IDispatch-Interface nicht.
|
|
</simpara>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q8">
|
|
<question>
|
|
<para>
|
|
Wie kann ich ein COM-Object von einem entfernten Server ausführen?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Genauso, wie Sie lokale COM-Objekte ausführen. Sie müssen nur die IP des
|
|
entfernten Rechners als zweiten Parameter an den COM-Konstruktor
|
|
übergeben.
|
|
</para>
|
|
<para>
|
|
Stellen Sie sicher, dass Sie
|
|
<link linkend="ini.com.allow-dcom">com.allow_dcom</link><literal>=</literal>&true;
|
|
in der &php.ini; gesetzt haben.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q9">
|
|
<question>
|
|
<para>
|
|
Ich bekomme die Meldung "DCOM is disabled in C:\path...\scriptname.php on
|
|
line 6" angezeigt, was kann ich tun?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Bearbeiten Sie die &php.ini; und setzen Sie
|
|
<link linkend="ini.com.allow-dcom">com.allow_dcom</link><literal>=</literal>&true;.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q10">
|
|
<question>
|
|
<para>
|
|
Ist es möglich ein ActiveX-Objekt auf einer Seite mit PHP zu
|
|
laden/manipulieren?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Das hat nichts mit PHP zu tun. ActiveX-Objekte werden beim Benutzer
|
|
geladen, wenn sie vom HTML-Dokument angefordert werden. Es gibt keine
|
|
Verbindung zum PHP-Skript, also ist auch keine direkte Interaktion auf
|
|
der Seite des Servers möglich.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
<qandaentry xml:id="faq.com.q11">
|
|
<question>
|
|
<para>
|
|
Ist es möglich, eine laufende Instanz einer Komponente zu erhalten?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Mithilfe von Monikern ist das möglich. Wenn Sie mehrere Referenzen zum
|
|
selben Word-Exemplar erhalten möchten, können Sie dieses Exemplar
|
|
erstellen, wie hier beschrieben:
|
|
</para>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$word = new COM("C:\docs\word.doc");
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Dieser Code erstellt ein neues Exemplar, wenn kein laufendes Exemplar
|
|
verfügbar ist, oder er gibt ein Handle zum laufenden Exemplar zurück,
|
|
wenn dieses verfügbar ist.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
<qandaentry xml:id="faq.com.q12">
|
|
<question>
|
|
<para>
|
|
Gibt es einen Weg, um ein Ereignis von einem COM-Objekt zu verarbeiten?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Sie können einen Listener definieren und ihn mithilfe von
|
|
<function>com_event_sink</function> binden.
|
|
Sie können <function>com_print_typeinfo</function> benutzen, um
|
|
eine Listener-Skelettklasse von PHP erstellen zu lassen.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q13">
|
|
<question>
|
|
<para>
|
|
Ich habe Probleme, wenn ich versuche eine Methode eines COM-Objekts
|
|
auszuführen, die mehr als ein Interface implementiert. Was kann ich tun?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Die Antwort ist genauso einfach wie unbefriedigend. Wir wissen es nicht
|
|
genau, aber wir glauben, dass Sie nichts tun können.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q14">
|
|
<question>
|
|
<para>
|
|
PHP funktioniert mit COM, aber was ist mit COM+?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
COM+ erweitert COM um ein Framework, um Komponenten über MTS und MSMQ zu
|
|
verwalten, aber es gibt nichts Besonderes, das PHP unterstützen müsste,
|
|
um solche Komponenten zu benutzen.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q15">
|
|
<question>
|
|
<para>
|
|
Wenn PHP COM-Objekte manipulieren kann, könnten wir in Zukunft MTS in
|
|
Verbindung mit PHP benutzen, um Komponenten-Ressourcen zu verwalten?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
PHP selbst verarbeitet Transaktionen noch nicht. Wenn also ein Fehler
|
|
auftritt, wird kein Rollback gestartet. Wenn Sie Komponenten benutzen, die
|
|
Transaktionen unterstützen, müssen Sie das Transaktions-Management selbst
|
|
implementieren.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|