Xulrunner 在以低权限用户运行时崩溃

Xulrunner 在以低权限用户运行时崩溃

我在服务器上使用 SlimerJs 作为无头浏览器。由于服务器没有 xserver,因此我使用 xvfb 来运行它。

该命令如下:

xvfb-run --server-args="-screen 0, 1024x768x24" slimerjs-0.10.0pre/slimerjs \
script.js --debug=yes "/tmp/file986Iww" "/tmp/file28bAEv" "pdf"

该文件script.js采用一个文件名作为输入,一个文件名作为输出,以及一个要转换的格式,使用 slimer 的打印机功能。

我的问题是,以 root 身份运行时,它工作正常。但是当我让 apache 执行工作时,它失败并卡住了。

Apache 在用户和组下运行www-data。这是上一个命令的输出:

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 **

第 66 行XULStore.js是:

65. Services.obs.addObserver(this, "profile-before-change", true);
66. this._storeFile = Services.dirsvc.get("ProfD", Ci.nsIFile);
67. this._storeFile.append(STOREDB_FILENAME);

尝试查看 strace 出了什么问题,告诉我它卡在了某种循环中......

我看不出该用户无法运行该二进制文件的原因。
我如何调试缺少哪些权限或者 xulrunner 出了什么问题?

我没有发布 strace,因为它太重了,如果您觉得它可能包含相关信息,请随时索取。

$ 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

答案1

您可能没有权限访问或写入您尝试检索的配置文件目录。

--profile /tmp/slimerjs.gRAJJar6尽管您(大概)试图通过以下方式设置配置文件目录SlimerJS 文档表示这应该是-profile(单破折号)

默认情况下,如果您省略配置文件选项(由于双破折号与单破折号的关系,您似乎正在这样做),那么“SlimerJS 将在您每次启动时创建一个临时配置文件”,方法是在“$HOME/.innophi/slimerjs/”中创建一个新目录

由于您尝试运行此操作,请www-data检查其主目录并验证您是否可以在 SlimerJS 默认目录路径中创建和访问文件,或者使用-profile--profile验证您是否可以在指定文件夹中创建和访问文件。

相关内容