Foros del Web » Programando para Internet » PHP »

[Solucionado] Objetos COM - Word - 2 servidores.

Estas en el tema de [Solucionado] Objetos COM - Word - 2 servidores. en el foro de PHP en Foros del Web. Buenas, tengo dos servidores, uno Linux y otro Windows. Sobre el servidor Linux tengo toda mi aplicación montada, pero me gustaría poder utilizar un objeto ...
  #1 (permalink)  
Antiguo 27/07/2009, 04:02
TobyMudito
Invitado
 
Mensajes: n/a
Puntos:
Pregunta [Solucionado] Objetos COM - Word - 2 servidores.

Buenas, tengo dos servidores, uno Linux y otro Windows. Sobre el servidor Linux tengo toda mi aplicación montada, pero me gustaría poder utilizar un objeto COM que sólo funciona sobre servidores Windows para trabajar con documentos de Word.

La idea es que desde un script php alojado en el servidor Linux haga lo siguiente:

Código:
$filename = "prueba.doc";
$word = new COM("word.application","http:\\servidorWindows") or die("Unable to instantiate Word");
$word->Documents->Open(realpath($filename));
$new_filename = "C:\\AppServ\\www\\".substr($filename,0,-4).".html";
...
Para que este resuelva la petición COM y la variable $word ya contenga el resultado. No obstante PHP me informa del error de que no encuentra la clase COM en el servidor Linux, por lo que no se como llevar a cabo este punto, sin tener que migrar toda la aplicación al servidor Windows.

Espero que me puedan ayudar.

Última edición por TobyMudito; 28/07/2009 a las 03:07
  #2 (permalink)  
Antiguo 27/07/2009, 08:26
 
Fecha de Ingreso: febrero-2006
Mensajes: 134
Antigüedad: 18 años, 2 meses
Puntos: 10
Respuesta: [Sin resolver] Objetos COM - Word - 2 servidores.

Bueno, lo primero, yo no utilizo COM, pero según veo en el manual, la configuración en tiempo de ejecución tiene que tener en el php.ini el siguiente valor:
com.allow_dcom = "1"

y luego se me ocurre que en lugar de "http:\\servidorWindows" utilices las barras diagonales SOLIDUS (/) en lugar de las barras invertidas, además, para que PHP interpretase http:\\servidorWindows tendrías que escribir "http:\\\\servidorWindows", por ser \ un caracter especial bajo las comillas dobles.
En cualquier caso, prueba utilizando como servidor un array al estilo
Código PHP:
array( 'Server' => 'servidorWindows.localdomain.example',
          
'Username' => 'TuUsuarioDCOM',
          
'Password' => 'PasswordParaTuUsuario',
); 
Prueba a ver si te ayuda ;)

Un saludo.
__________________
Si te ha gustado lo que he dicho, puedes darme algún punto de reputación, que no te cuesta nada ^_^.

Di no a los juicios de valor!
  #3 (permalink)  
Antiguo 27/07/2009, 08:39
TobyMudito
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [Sin resolver] Objetos COM - Word - 2 servidores.

He probado lo que me comentas, y sigue apareciendome el mismo error:
Fatal error: Class 'COM' not found

El error es claro: No hay definida ninguna clase COM dentro del servidor, mi duda a parte de lo expuesto, comienza a reducirse, a si dentro de una máquina Linux se puede crear un objeto COM haciendo uso de D-COM, es decir, realizando la llamada a un servidor Windows.

Tengo la impresión de que sólo se puede hacer, si el servidor que realiza la petición es también Windows.

A parte de eso, he solicitado a mi proveedor de hosting que me active esa variable en el PHP.ini y estoy a la espera de respuesta.

¿Qué alternativa usas tu?
  #4 (permalink)  
Antiguo 27/07/2009, 09:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: [Sin resolver] Objetos COM - Word - 2 servidores.

Según el Manual la clase COM solo esta disponible bajo sistemas Windows, no puedes ejecutarla en un servidor Linux.

Saludos.
  #5 (permalink)  
Antiguo 27/07/2009, 09:05
 
Fecha de Ingreso: febrero-2006
Mensajes: 134
Antigüedad: 18 años, 2 meses
Puntos: 10
Respuesta: [Sin resolver] Objetos COM - Word - 2 servidores.

COM functions are only available for the Windows version of PHP.

.Net support requires PHP 5 and the .Net runtime.

Necesitas Windows para acceder a la clase COM.

Se me ocurre que podrías redirigir la petición, por ejemplo, alojando esa parte de tu aplicación en el servidor windows y ejecutarla desde el servidor Linux con cURL.
O bien con un proxy, pero si dependes de un proveedor no creo que le puedas pedir que cambie el puerto 80 para un proxy, y que ponga el servidor web en otro puerto distinto, jaja.
En esos casos lo más cómodo sería cURL, creo yo, aunque es menos eficiente, pues tienes a un servidor esperando por otro, y retransmites los datos dos veces (Servidor#1--Servidor#2--Cliente).


Edit: GatorV se me adelantó ^^
__________________
Si te ha gustado lo que he dicho, puedes darme algún punto de reputación, que no te cuesta nada ^_^.

Di no a los juicios de valor!
  #6 (permalink)  
Antiguo 27/07/2009, 09:06
TobyMudito
Invitado
 
Mensajes: n/a
Puntos:
Efectivamente eso dice y es lo que me temía, pensé que permitiría la interoperabilidad entre máquinas linux que ejecutan la llamada y las de windows que son las que la reciben.

Creo que la forma de resolver esto es implementando un web service, voy a tratar de averiguar como hacerlo.

Muchas gracias y un saludo!!

No había oído nunca hablar de cURL, creo por lo que he leído que lo mas eficiente sería utiilizando un web service implementado con SOAP, estos temas son totalmente nuevos para mi por lo que agradecería un enfoque.

Mejor un webService o utilizar cURL?

Última edición por GatorV; 27/07/2009 a las 10:28
  #7 (permalink)  
Antiguo 27/07/2009, 10:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: [Sin resolver] Objetos COM - Word - 2 servidores.

Todo depende, cual es la finalidad de tu script, si es procesar y devolver algún archivo de Word, creo lo más eficiente es que uses cURL, si es procesar datos que tienes que manipular de alguna forma de regreso en PHP mejor usa un WebService.

Saludos.
  #8 (permalink)  
Antiguo 27/07/2009, 10:31
TobyMudito
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [Sin resolver] Objetos COM - Word - 2 servidores.

Lo que necesito es que la persona suba el archivo de Word a mi server y que la aplicación lo convierta a un fichero HTML.

Te rogaría GatorV ya que nunca he trabajado con cURL y tampoco casi he tocado los web Services, que me orientaras.

Muchísimas gracias.
  #9 (permalink)  
Antiguo 27/07/2009, 11:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: [Sin resolver] Objetos COM - Word - 2 servidores.

Pues en el Manual viene muy bien explicado lo único que hace cURL es un cliente HTTP con el que tu puedes abrir una petición HTTP a tu otro servidor y devolver un resultado, tal como lo haces desde el explorador normal.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:02.