Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Como ejecutar unoconv en PHP/Apache y no morir en el intento

Estas en el tema de Como ejecutar unoconv en PHP/Apache y no morir en el intento en el foro de PHP en Foros del Web. Configurar apache para ejecutar unoconv y no morir en el intento Unoconv es un conversor de documentos de LibreOffice / Openffice a otros formatos, entre ...
  #1 (permalink)  
Antiguo 11/03/2018, 03:40
 
Fecha de Ingreso: febrero-2008
Mensajes: 113
Antigüedad: 12 años, 3 meses
Puntos: 4
De acuerdo Como ejecutar unoconv en PHP/Apache y no morir en el intento

Configurar apache para ejecutar unoconv y no morir en el intento

Unoconv es un conversor de documentos de LibreOffice / Openffice a otros formatos, entre ellos el PDF.

En este script solo uso dos variables Origen del archivo y destino del resultado, podriamos añadir una tercera variable que fuera el formato de salida, en mi caso como solo quiero transformar documentos a pdf lo he dejado asi:


Fichero script: libreofficeconverter.sh
Código:
#!/bin/bash

if [ -z "$1" ]; then
    echo "Must pass source file to convert to pdf";
    exit 10;
fi

# Asumimos que unoconv esta situado en /usr/bin/unoconv

/usr/bin/unoconv -f pdf --output $1 $2
chown www-data $1
chgrp www-data $1
si os fijais uso chown y chgrp para hacer que el fichero tenga los permisos del ussuario de apache. En mi caso para poder eliminar o modificar esos ficheros desde PHP. Si estas dos ultimas lineas no se ponen, el fichero será creado como root


Como root ejecutaremos el siguiente comando
Código:
visudo
Al final del archivo añadimos nuestro script para que apache pueda ejecutarlo

Código:
www-data ALL=NOPASSWD: /ruta/al/script/libreofficeconverter.sh
Guardamos los datos

y el script en php:

Código:
$fichero_origen = "/ruta/del/archivo/de/origen/documento.odt";
$fichero_salida = "/ruta/del/archivo/de/destino/resultado.pdf";

    shell_exec('sudo /ruta/al/script/libreofficeconverter.sh ' . $fichero_salida .' '.$fichero_origen);
Ten en cuenta que le pasamos dos variables al script $1 y S2 que son el origen y el destino


Espero que esto os sirva, ya que he estado buscando durante mucho tiempo la solución a este problema que tenia que no conseguia hacerlo funcionar bajo web.
  #2 (permalink)  
Antiguo 03/05/2020, 12:22
 
Fecha de Ingreso: febrero-2008
Mensajes: 113
Antigüedad: 12 años, 3 meses
Puntos: 4
Respuesta: Como ejecutar unoconv en PHP/Apache y no morir en el intento

NOTA:

Con Debian 10, primero hay que instalar sudo

Código:
apt-get install sudo
y posteriormente ejecutar:

Código:
sudo visudo
__________________
Estrella 923



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