
Utilizo SlimerJs como navegador sin cabeza en un servidor. Como el servidor no tiene xserver, utilicé xvfb para ejecutarlo.
El comando es algo como esto:
xvfb-run --server-args="-screen 0, 1024x768x24" slimerjs-0.10.0pre/slimerjs \
script.js --debug=yes "/tmp/file986Iww" "/tmp/file28bAEv" "pdf"
El archivo script.js
toma un nombre de archivo para entrada, un nombre de archivo para salida y un formato para convertir, utilizando la capacidad de impresora de Slimer.
Mi problema es que cuando se ejecuta como root, funciona bien. Pero cuando dejo que Apache haga el trabajo, falla y se bloquea.
Apache se ejecuta bajo www-data
usuario y grupo. Este es el resultado del comando anterior:
slimerjs-0.10.0pre/xulrunner/xulrunner -app slimerjs-0.10.0pre/application.ini --profile /tmp/slimerjs.gRAJJar6 -no-remote script.js --debug=yes /tmp/file986Iww /tmp/file28bAEv pdf
Xlib: extension "RANDR" missing on display ":99".
JavaScript warning: resource://slimerjs/slUtils.jsm, line 154: JavaScript 1.7's let blocks are deprecated
JavaScript error: jar:file:///var/www/project/slimerjs-0.10.0pre/xulrunner/omni.ja!/components/XULStore.js, line 66: NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIProperties.get]
** stuck forever here **
La línea 66 de XULStore.js
es:
65. Services.obs.addObserver(this, "profile-before-change", true);
66. this._storeFile = Services.dirsvc.get("ProfD", Ci.nsIFile);
67. this._storeFile.append(STOREDB_FILENAME);
Al tratar de ver qué está mal con strace, muéstrame que está atrapado en una especie de bucle...
No veo ninguna razón por la que este usuario no pueda ejecutar este binario.
¿Cómo puedo depurar qué permiso falta o qué va mal con xulrunner?
No publiqué la cinta porque es bastante pesada, no dudes en solicitarla si crees que puede contener información relevante.
$ uname -a
Linux *host* 3.10-0.bpo.2-amd64 #1 SMP Debian 3.10.5-1~bpo70+1 (2013-08-11) x86_64 GNU/Linux
Respuesta1
Es posible que no tenga permisos para acceder o escribir en el directorio de perfil que está intentando recuperar.
Aunque (presumiblemente) está intentando configurar el directorio de perfil a través --profile /tmp/slimerjs.gRAJJar6
delDocumentación de SlimerJSindica que esto debería ser -profile
(un solo guión)
De forma predeterminada, si omite la opción de perfil, como parece que está haciendo debido al guión doble frente al guión único, entonces "SlimerJS [creará] un perfil temporal cada vez que lo inicie" creando un nuevo directorio en "$ INICIO/.innophi/slimerjs/"
Dado que está intentando ejecutar esto, www-data
verifique su directorio de inicio y verifique que puede crear y acceder a archivos en la ruta del directorio predeterminado de SlimerJS o usarlo -profile
en lugar de --profile
y verificar que puede crear y acceder a archivos en la carpeta especificada.