
나는 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의 프린터 기능을 사용하여 입력용 파일 이름, 출력용 파일 이름 및 변환할 형식을 사용합니다.
내 문제는 루트로 실행할 때 제대로 작동한다는 것입니다. 하지만 아파치에게 작업을 맡기면 실패하고 멈추게 됩니다.
www-data
Apache는 사용자 및 그룹 으로 실행됩니다 . 이는 이전 명령의 출력입니다.
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
지정된 폴더에서 파일을 생성 및 액세스할 수 있는지 확인하기 위해 이를 실행하려고 시도하고 있기 때문입니다 .