mirror of
https://github.com/php/doc-es.git
synced 2026-03-23 23:12:09 +01:00
301 lines
8.2 KiB
XML
301 lines
8.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: e0352653179c355a6b9c353629147b06a2069f24 Maintainer: PhilDaiguille Status: ready -->
|
|
<!-- Reviewed: no Maintainer: seros -->
|
|
<chapter xml:id="faq.com" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>PHP y COM</title>
|
|
<titleabbrev>PHP y COM</titleabbrev>
|
|
|
|
<para>
|
|
PHP puede ser usado para acceder a objetos COM y DCOM en plataformas Win32.
|
|
</para>
|
|
|
|
<qandaset>
|
|
<qandaentry xml:id="faq.com.q1">
|
|
<question>
|
|
<para>
|
|
He compilado un DLL para calcular algo. ¿Hay alguna forma de ejecutar ese DLL bajo PHP?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Si se trata de un DLL simple no hay forma aun de ejecutarlo desde PHP. Si el archivo DLL contiene un
|
|
servidor COM es posible que pueda acceder a él si implementa la interfaz IDispatch.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q2">
|
|
<question>
|
|
<para>
|
|
¿Qué quiere decir 'Unsupported variant type: xxxx (0xxxxx)'?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Existen docenas de tipos VARIANT y combinaciones de ellos. La mayoría de ellos son soportados pero
|
|
algunos aun deben ser implementados.
|
|
Las matrices no están completamente soportadas. Solo las matrices unidimensionales de índice
|
|
pueden ser pasadas entre PHP y COM.
|
|
Si encuentra otros tipos que no sean soportados, por favor repórtelos como un bug (si aun no han sido reportados)
|
|
y ofrezca tanta información como tenga disponible.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q3">
|
|
<question>
|
|
<para>
|
|
¿Es posible manipular objetos visuales en PHP?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
En general es posible, pero ya que PHP es usado frecuentemente como un
|
|
lenguaje de scripting web, corre en el contexto de servidores web, por
|
|
lo que objetos visuales nunca aparecerán en el escritorio de los
|
|
servidores. Si usa PHP para una aplicación de scripting, p.ej. en
|
|
conjunto con PHP-GTK, no hay limitaciones al acceder y manipular
|
|
objetos visuales a través de COM.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q4">
|
|
<question>
|
|
<para>
|
|
¿Puedo almacenar un objeto COM en una sesión?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
No, no puede. Las instancias COM son tratadas como recursos y por lo
|
|
tanto sólo están disponibles en el contexto de un script único.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q5">
|
|
<question>
|
|
<para>
|
|
¿Cómo puedo atrapar errores de COM?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
La extensión COM lanza excepciones
|
|
<literal>com_exception</literal>, las cuales puede atrapar y luego
|
|
inspeccionar el miembro <literal>code</literal> para determinar el
|
|
siguiente paso.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q6">
|
|
<question>
|
|
<para>
|
|
¿Puedo generar archivos DLL desde scripts PHP como puedo en Perl?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
No, desafortunadamente no existe una herramienta de ese tipo
|
|
disponible para PHP.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q7">
|
|
<question>
|
|
<para>
|
|
¿Qué quiere decir 'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}'?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Este error puede tener varias razones:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<simpara>
|
|
el valor CLSID es incorrecto
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
el archivo DLL solicitado no existe
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
el componente solicitado no implementa la interfaz IDispatch
|
|
</simpara>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q8">
|
|
<question>
|
|
<para>
|
|
¿Cómo puedo ejecutar un objeto COM desde un servidor remoto?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Exactamente como ejecuta objetos locales. Tan solo debe pasar la IP de
|
|
la máquina remota como segundo parámetro al constructor COM.
|
|
</para>
|
|
<para>
|
|
Asegúrese de que ha definido <link
|
|
linkend="ini.com.allow-dcom">com.allow_dcom</link><literal>=</literal>&true;
|
|
en su &php.ini;.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q9">
|
|
<question>
|
|
<para>
|
|
Recibo 'DCOM is disabled in C:\ruta...\nombre_script.php on line 6',
|
|
¿qué puedo hacer?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Edite su archivo &php.ini; y defina <link
|
|
linkend="ini.com.allow-dcom">com.allow_dcom</link><literal>=</literal>&true;.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q10">
|
|
<question>
|
|
<para>
|
|
¿Es posible leer/manipular un objeto ActiveX en una página con PHP?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Esto no tiene nada que ver con PHP. Los objetos ActiveX son cargados
|
|
en el lado del cliente si son solicitados por el documento HTML. No
|
|
hay relación con el script PHP y por lo tanto no hay una interacción
|
|
directa posible con el lado del servidor.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q11">
|
|
<question>
|
|
<para>
|
|
¿Es posible obtener una instancia en ejecución de un componente?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Esto es posible con la ayuda de monikers. Si desea obtener múltiples
|
|
referencias a la misma instancia de word, puede crear esa instancia
|
|
como se muestra:
|
|
</para>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$word = new COM("C:\docs\word.doc");
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Esto creará una nueva instancia si no hay una instancia en ejecución
|
|
disponible, o devolverá un gestor a la instancia en ejecución, si
|
|
existe.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q12">
|
|
<question>
|
|
<para>
|
|
¿Hay una forma de manejar un evento enviado desde un objeto COM?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Puede definir el receptor de un evento y asociarlo usando
|
|
<function>com_event_sink</function>. Es posible usar
|
|
<function>com_print_typeinfo</function> para que PHP genere un
|
|
esqueleto para la clase receptora del evento.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q13">
|
|
<question>
|
|
<para>
|
|
Estoy teniendo problemas al intentar invocar un método de un objeto
|
|
COM el cual expone más de una interfaz. ¿Qué puedo hacer?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
La respuesta es tan simple como poco satisfactoria. No estamos seguros
|
|
pero parece que no es posible hacer nada.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q14">
|
|
<question>
|
|
<para>
|
|
Así que PHP funciona con COM, ¿qué hay de COM+?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
COM+ extiende COM mediante un marco para administrar componentes a
|
|
través de MTS y MSMQ pero no hay nada especial que PHP deba soportar
|
|
para usar tales componentes.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.com.q15">
|
|
<question>
|
|
<para>
|
|
Si PHP puede manipular objetos COM, ¿podemos imaginar el uso de MTS
|
|
para manejar recursos de componentes, en conjunto con PHP?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
PHP por sí mismo no maneja transacciones aun. Por lo tanto si un error
|
|
ocurre no se inicia un proceso rollback. Si usa componentes que
|
|
soporten transacciones tendrá que implementar la gestión de
|
|
transacciones usted mismo.
|
|
</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
|
|
-->
|