mirror of
https://github.com/php/doc-it.git
synced 2026-03-24 07:32:12 +01:00
287 lines
8.5 KiB
XML
287 lines
8.5 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: e0352653179c355a6b9c353629147b06a2069f24 Maintainer: cucinato Status: ready -->
|
|
<chapter xml:id="faq.com" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>PHP e COM</title>
|
|
<titleabbrev>PHP e COM</titleabbrev>
|
|
|
|
<para>
|
|
PHP può essere usato per accedere a oggetti COM o DCOM sotto piattaforme Win32.
|
|
</para>
|
|
|
|
<qandaset>
|
|
<qandaentry xml:id="faq.com.q1">
|
|
<question>
|
|
<para>
|
|
Ho creato una DLL per calcolare qualcosa. Esiste un modo per eseguire questa DLL sotto PHP?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Se è una semplice DLL non esiste ancora un modo per poterla eseguire sotto PHP. Se la DLL contiene un
|
|
server COM potresti essere in grado di eseguirla se è fornita di un'interfaccia IDispatch.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q2">
|
|
<question>
|
|
<para>
|
|
Cosa significa: 'Unsupported variant type: xxxx (0xxxxx)'?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Ci sono dozzine di tipi di VARIANT (varianti) e loro possibili combinazioni. La maggior parte di queste sono
|
|
già supportate, ma una piccola parte deve ancora essere implementata.
|
|
Gli array non sono ancora completamente
|
|
supportati. Possono essere passati tra PHP e COM solo array non multidimesionali. Se
|
|
trovi altri tipi che non sono supportati, segnalalo come un BUG (solo se non è già stato fatto da qualcun
|
|
altro) e cerca di fornire il maggior numero possibile di informazioni.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q3">
|
|
<question>
|
|
<para>
|
|
È possibile manipolare dei visual object con PHP?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Generalmente sì, ma PHP, essendo per lo più usato come un linguaggio di scripting per il web, gira nel
|
|
contesto di un webserver, quindi i visual object non appariranno mai sui desktope dei server. Per esempio
|
|
se usi PHP per scrivere applicazioni insieme a PHP-GTK non ci sono limiti di sorta agli accessi o alla
|
|
manipolazioni di visual object attraverso COM.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q4">
|
|
<question>
|
|
<para>
|
|
Posso salvare un oggetto COM in una sessione?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
No, non puoi. Le istanze COM sono trattate come risorse e quindi sono disponibili solo nel contesto di un singolo script.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q5">
|
|
<question>
|
|
<para>
|
|
Come posso bloccare gli errori COM?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Il modulo COM genera un'eccezione <literal>com_exception</literal>,
|
|
che può essere catturata per determinare come
|
|
comporstarsi.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q6">
|
|
<question>
|
|
<para>
|
|
Tramite script Perl riesco a creare delle DLL: è possibile farlo anche in PHP?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
No, sfortunatamente non esiste ancora una funzione simile per PHP.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q7">
|
|
<question>
|
|
<para>
|
|
Cosa significa: 'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}'?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Questo errore può essere determinato da diversi fattori:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<simpara>
|
|
il CLSID è sbagliato
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
manca una DLL richiesta
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
i componenti richiesti non implementano l'interfaccia IDispatch
|
|
</simpara>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q8">
|
|
<question>
|
|
<para>
|
|
Come devo fare per eseguire oggetti COM da un server remoto?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Nello stesso modo in cui esegui un oggetto COM in locale. Devi solo passare l'IP del server remoto come
|
|
secondo parametro al costruttore COM.
|
|
</para>
|
|
<para>
|
|
Assicurati di aver settatoi
|
|
<link linkend="ini.com.allow-dcom">com.allow_dcom</link><literal>=</literal>&true;
|
|
nel &php.ini;.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q9">
|
|
<question>
|
|
<para>
|
|
Ricevo questo messaggio di errore: 'DCOM is disabled in C:\percorso...\nome_script.php on line 6'. Cosa posso fare?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Modifica il tuo &php.ini; e setta
|
|
<link linkend="ini.com.allow-dcom">cm.allow_dcom</link><literal>=</literal>&true;.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q10">
|
|
<question>
|
|
<para>
|
|
È possibile caricare/manipolare un oggetto ActiveX in una pagina PHP?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Ciò non ha nulla a che vedere con PHP. Gli oggetti ActiveX sono caricati dalla macchina del visitatore
|
|
(client side) se sono richiesti in una pagina HTML. Non esiste alcun nesso con gli script PHP e quindi
|
|
non ci può essere nessun tipo di interazione sul server.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
<qandaentry xml:id="faq.com.q11">
|
|
<question>
|
|
<para>
|
|
È possibile un'istanza in esecuzione di un componente?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Ciò è possibile con l'aiuto di soprannomi. Se vuoi ricevere referenze multiple di una stessa istanza, puoi
|
|
creare l'istanza come segue:
|
|
</para>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$word = new COM("C:\docs\word.doc");
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Questo creerà una nuova istanza se non esistono istanza in esecuzione disponibili, o ritornerà un handle,
|
|
se disponibile, dell'istanza in esecuzione.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
<qandaentry xml:id="faq.com.q12">
|
|
<question>
|
|
<para>
|
|
Esiste un modo per manipolare un evento inviato da un oggetto COM?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Si possono creare i event sink e collegarli tramite
|
|
<function>com_event_sink</function>. Inoltre si può utilizzare
|
|
<function>com_print_typeinfo</function> per fare generare al PHP lo scheletro
|
|
di una classe per gestire un event sink.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q13">
|
|
<question>
|
|
<para>
|
|
Sto riscontrando dei problemi quando provo a invocare un metodo di
|
|
un oggetto COM che espone più di una interfaccia. Che cosa posso fare?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
La risposta è tanto semplice quanto insoddisfacente.
|
|
Non lo sappiamo con esattezza, ma pensiamo che non si possa fare nulla.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q14">
|
|
<question>
|
|
<para>
|
|
PHP riesce a lavorare con COM, ma come si comporta con COM+?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
COM+ estende COM tramite una struttura di amministrazione dei componenti attraverso MTS e MSMQ, ma non c'è
|
|
niente di particolare che PHP dovrebbe avere in più per supportare anche questi componenti.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q15">
|
|
<question>
|
|
<para>
|
|
Se PHP può manipolare oggetti COM, immagino di poter usare MTS
|
|
per amministrare le risorse dei componenti insieme a PHP.
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
PHP ancora non è in grado di manipolare di per sè le transazioni.
|
|
Quindi se avviene un qualunque errore non viene eseguito nessun rollback. Se fai uso
|
|
di componenti che supportano le transazioni dovrai implementare da te la
|
|
gestione delle transazioni.
|
|
</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
|
|
-->
|