domingo, 11 de marzo de 2018

unoconv ejecutarlo desde PHP / apache y no morir en el intento

Configurar apache para ejecutar unoconv

Fichero script: libreofficeconverter.sh

#!/bin/bash

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

# This assumes your unoconv executable is located at /usr/bin/unoconv
# If that's not true try a `which unoconv` to get the path and update
# the path below to your path

/usr/bin/unoconv -f pdf --output $1 $2
chown www-data $1
chgrp www-data $1
 
Como root ejecutaremos el comanbdo

visudo
 
Al final del archivo añadimos nuestro script para que apache pueda ejecutarlo


# Script que queremos ejecutar desde apache
www-data ALL=NOPASSWD: /ruta/al/script/libreofficeconverter.sh
 
 Guardamos los cambios

y el script en php:

$fichero_origen = "/ruita/del/archivo/a/convertir/fichero.odt";
$fichero_salida = "/ruta/destino/donde/queremos/generar/el/archivo/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

 y con esto ya tenemos el problema solucionado