2012-04-16 12 views
8

Tengo un servidor web configurado en mi computadora portátil. Estoy construyendo una aplicación web a la que estoy accediendo a través de la red local. Tengo un archivo PHP que contiene las siguientes líneas:no se puede ejecutar oowriter como usuario web

$command = "/usr/bin/oowriter --invisible --convert-to pdf /var/www/hackathon/document/gaurav.doc -outdir /var/www/hackathon/pdf/" 
exec($command, $output, $return_var); 
print_r($output); 

Por lo tanto, el problema es que cuando ejecuto el código anterior en el terminal de php funciona perfectamente. Pero cuando se accede a través de un navegador web, la salida está vacía y no se realiza ninguna conversión según lo previsto.

registro de errores de Apache muestra las siguientes líneas:

[marco de Java] Error en createSettingsDocument función (elements.cxx).
javaldx failed!
Advertencia: no ha podido leer trayectoria desde javaldx

He intentado soluciones de https://wiki.archlinux.org/index.php/Libreoffice#Fixing_Java_Framework_Error. Pero no funcionó.

estoy usando OpenJDK 7.

¿Alguien tiene alguna idea sobre cómo hacer este trabajo?

+0

En mi caso, estableciendo HOME =/tmp, el directorio libreoffice intenta acceder, lo hizo funcionar. Fraber y ConsuLanza Informatica tienen un buen enfoque. Chicos THX. Además, la gran respuesta en esta [publicación relacionada] (https://stackoverflow.com/questions/12101855/libreoffice-headless-refuses-to-convert-unless-root-wont-work-from-php-scrip) me ayudó descubriéndolo eventualmente. –

Respuesta

3

OpenOffice necesita un directorio de usuario. Como intenta invocar OpenOffice con el servidor web, debe otorgarle el acceso de escritura respectivo al usuario. En Debian, por ejemplo, eso significaría para permitir www-data para escribir en /var/www/.openoffice.org/:

mkdir /var/www/.openoffice.org 
chown www-data /var/www/.openoffice.org 
+1

No puedo marcar esta respuesta ya que no sé si ayuda con el problema del OP, pero fue útil saberlo en términos de usar LibreOffice sin cabeza con Alfresco 4.2, ya que este error aparece en los registros cuando se intenta (y falla) para obtener una vista previa de los documentos. – Vaughany

6

no pueden votar, no puedo comentar (todavía) ... Entonces ...

Lo que Tim-Erwin dijo es verdad.

El error de hecho afirma que error en la función createSettingsDocument que es un indicio de que alguna función llamada createSettingsDocument (nota: crear Parámetros del documento) está fallando ....

De la siguiente manera (o al menos yo) conseguir que funcione: LibreOffice

  1. Ejecutar como un usuario normal una vez y tenga en cuenta el nombre del directorio que crea.
  2. Compruebe qué usuario está ejecutando el servidor (o qué usuario ejecuta PHP como, que puede ser diferente de www-data si está en FPM, etc. ...).
  3. Comprobar lo que el directorio de inicio se establece en para este usuario (de /etc/passwd por ejemplo)
  4. Cree el directorio que anotó en el paso 1 en el directorio desde el paso 3
  5. Cambiar propietario del directorio creado en el usuario del paso 2

en mi servidor del directorio necesaria era en realidad /var/www/LibreOffice, mientras que en mi máquina de escritorio, el directorio hubiera sido /var/www /.config/libreoffice por lo que debe asegurarse.

1

Recibí el mismo mensaje de error ejecutando "ooffice --headless --convert-to pptx filename" de un servidor web (en realidad "NaviServer" 4.99). Las soluciones anteriores no resolvieron mi problema, pero me pusieron en el camino correcto. Resultó que NaviServer cambia la variable de entorno "HOME" a su directorio de instalación/usr/local/ns, por lo que LibreOffice intentó acceder y crear una carpeta .config en este directorio. Descubrí ejecutando el comando BASH "set" desde el servidor web y comprobando las variables de entorno.

3

¡La respuesta de Fraber resolvió el problema para mí!

ocasión:

$cmd = 'HOME='.getCWD().' && export HOME && libreoffice --headless ....'; 
exec($cmd); 

LibreOffice entonces creó '.config' y directorios 'LibreOffice' en el directorio de los scripts PHP. Obviamente debe ser grabable por el proceso del servidor web.

+0

Esta es la respuesta correcta: me he estado tomando el pelo durante varias horas tratando de usar tanto la libre como la libreoffice directamente. – ckm

+0

gracias, esta es la respuesta correcta. –

Cuestiones relacionadas