권한이 없는 사용자로 실행할 때 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.jsslimer의 프린터 기능을 사용하여 입력용 파일 이름, 출력용 파일 이름 및 변환할 형식을 사용합니다.

내 문제는 루트로 실행할 때 제대로 작동한다는 것입니다. 하지만 아파치에게 작업을 맡기면 실패하고 멈추게 됩니다.

www-dataApache는 사용자 및 그룹 으로 실행됩니다 . 이는 이전 명령의 출력입니다.

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지정된 폴더에서 파일을 생성 및 액세스할 수 있는지 확인하기 위해 이를 실행하려고 시도하고 있기 때문입니다 .

관련 정보