Foros del Web » Programando para Internet » PHP »

Compilar Latex desed PHP

Estas en el tema de Compilar Latex desed PHP en el foro de PHP en Foros del Web. Muy buen día a todos y cada uno de los que se toman el tiempo de leer esto, ojalá y alguien pueda ayudarme a resolver ...
  #1 (permalink)  
Antiguo 05/03/2012, 12:41
 
Fecha de Ingreso: marzo-2012
Mensajes: 4
Antigüedad: 12 años, 1 mes
Puntos: 0
Pregunta Compilar Latex desed PHP

Muy buen día a todos y cada uno de los que se toman el tiempo de leer esto, ojalá y alguien pueda ayudarme a resolver mi problema.

Estoy tratando de compilar un archivo en latex mediante un script en PHP, en SO Windows, ya probé varias formas y no me queda, ya lo hice con los comandos exec("pdflatex archivo.tex"), system(),shell_exec(), con rutas absolutas, con el safe mode habilitado y dehabilitado, y con ninguno he obtendio el resultado, simplemente no compila, ni siquiera marca error . Tengo instalado el MikTex directamente en C:\, al igual que el WAMPServer, tanto mi archivo latex como php los tengo en la misma carpeta (www). Puedo compilarlo perfectamente desde línea de comandos, pero al querer hacerlo desde mi script php simplemente no funciona, no se si sea una cuestión de permisos, espero alguien me pueda orientar para solucionar esto.

De antemano muchas gracias.
  #2 (permalink)  
Antiguo 06/03/2012, 04:15
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Compilar Latex desed PHP

Cualquier llamada a system() o exec() se ejecuta con el usuario del proceso PHP, comprueba que tenga permisos de ejecución y supongo también de escritura sobre el directorio. Además, habilita error_reporting y display_errors para ver qué sale. Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 06/03/2012, 15:02
 
Fecha de Ingreso: marzo-2012
Mensajes: 4
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Compilar Latex desed PHP

Antes que nada Muchas Gracias por tu respuesta repara2.

Quiero indicar cuál es el código que me está dando el problema:

<?php
if (file_exists('reactivo.tex'))

exec("pdfdlatex C:\wamp\www\pestanas\reactivo.tex");

if (file_exists('reactivo.log'))
echo ("archivo compilado");

else echo ("archivo NO compilado");

?>

En el archivo php.ini tengo display_errors=On y error_reporting=E_ALL. Pero al ejecutar mi script solo aparce el mensaje de "archivo NO compilado".

En cuanto a los permisos, ya le di Control Total a SYSTEM para la carpeta de MikTex, no se si con esto sea suficiente para que el usuario del proceso PHP tenga los permisos necesarios, puesto que sigue sin compilar :(

Probé con otros comandos del SO como dir, date, entre otros, y estos sí los ejecuta.

Trataré de probar instalando MikTex dentro de la carpeta www para ver si así funciona.

Saludos!!
  #4 (permalink)  
Antiguo 07/03/2012, 01:19
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Compilar Latex desed PHP

No te puedo ayudar mucho con Windows pero primero prueba si el comando que le pasas a system funciona, pruébalo desde línea de comandos. Después, intenta utilizando la ruta absoluta al ejecutable, por ejemplo:

Código PHP:
Ver original
  1. exec("C:\Programas\PDFLatex\bin\pdfdlatex C:\wamp\www\pestanas\reactivo.tex");

Por último te diría que la comprobación se debería hacer sobre el archivo compilado y no sobre el .log, pero eso es un detalle, saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #5 (permalink)  
Antiguo 07/03/2012, 16:01
 
Fecha de Ingreso: marzo-2012
Mensajes: 4
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Compilar Latex desde PHP

Nuevamente Muy Buen Día y gracias por la respuesta.

Ya probé el comando directamente en la línea de comandos y funciona perfectamente.

Desde php lo probé escribiendo la ruta absoluta:

Código:
<?php                                                                                                                                                                                                
if (file_exists('reactivo.tex')) 
                      
echo exec("C:\MikTexFolder\miktex\bin\pdflatex C:\wamp\www\pestanas\reactivo.tex");

?>
y el resultado que obtengo es la versión de MikTex que tengo instalada: "This is pdfTeX, Version 3.1415926-2.3-1.40.12 (MiKTeX 2.9)", pero nada más, no hay ningún indicio de que realice la compilación, ya que el resultado de ésta serían otros archivos (.aux, .log, .pdf) y no genera ninguno de ellos, ya busqué pensando que los pudo haber creado en otra carpeta pero simplemente no los creó.

De cualquier forma muchas gracias repara2, y si hay alguien que haya tenido el mismo problema ojalá me puedan orientar para solucionarlo.

Saludos!!
  #6 (permalink)  
Antiguo 08/03/2012, 12:14
 
Fecha de Ingreso: marzo-2012
Mensajes: 4
Antigüedad: 12 años, 1 mes
Puntos: 0
Sonrisa Respuesta: Compilar Latex desed PHP

Muy Buen Día!!

Escribo para comentar que ya solucioné el problema que tenía con latex. No se si sea la mejor solución pero después de mucho tiempo quebrándome la cabeza finalmente funcionó. Al parecer sí era un problema de permisos pero no sabía cómo solcuionarlo, ya le había dado todos los permisos a la carpeta de MikTex para cualquier usuario (incluía SYSTEM) pero no sabía si esto era suficiente para que el usuario que corre el proceso de php tuviera acceso, al parecer no. También hice un archivo .bat para solucionarlo, pero sin conseguirlo. Lo que hice y finalmente dió resultado fue desinstalar el MikTex y reinstalarlo dentro de la carpeta donde está mi script de php que lleva a cabo la compilación, corrí mi script y generó los archivos .log, .aux y .pdf.

Muchas Gracias por tu interés y ayuda repara2!!

Espero que esto pueda ayudar a alguien más que tenga el mismo problema.

Etiquetas: compilar, latex
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 16:44.