저는 Linux를 사용하는 데 익숙하지 않지만 대부분의 호스팅 회사가 해당 기능을 비활성화하기 때문에 PHP exec 기능에 액세스하기 위해 Linux vps에서 slimerjs를 사용해 보고 싶습니다.
xampp, vsftpd, xulrunner, xvfb 및 slimerjs(독립 실행형 버전)를 성공적으로 설치했습니다.
다음 명령을 실행하면 slimerjs가 시작되지만 console.log 함수만 호출됩니다.
xvfb-run ./slimerjs hello.js
처음에 sudo를 추가하려고 시도했지만 결과는 동일합니다.
위 명령에 대한 "응답"은 다음과 같습니다.
Hi
6 XSELINUXs still allocated at reset
SCREEN: 0 objects of 132 bytes = 0 total bytes 0 private allocs
DEVICE: 0 objects of 64 bytes = 0 total bytes 0 private allocs
CLIENT: 0 objects of 112 bytes = 0 total bytes 0 private allocs
WINDOW: 0 objects of 20 bytes = 0 total bytes 0 private allocs
PIXMAP: 2 objects of 8 bytes = 16 total bytes 0 private allocs
GC: 4 objects of 8 bytes = 32 total bytes 0 private allocs
CURSOR: 0 objects of 4 bytes = 0 total bytes 0 private allocs
DBE_WINDOW: 0 objects of 12 bytes = 0 total bytes 0 private allocs
TOTAL: 6 objects, 48 bytes, 0 allocs
2 PIXMAPs still allocated at reset
PIXMAP: 2 objects of 8 bytes = 16 total bytes 0 private allocs
GC: 4 objects of 8 bytes = 32 total bytes 0 private allocs
CURSOR: 0 objects of 4 bytes = 0 total bytes 0 private allocs
DBE_WINDOW: 0 objects of 12 bytes = 0 total bytes 0 private allocs
TOTAL: 6 objects, 48 bytes, 0 allocs
4 GCs still allocated at reset
GC: 4 objects of 8 bytes = 32 total bytes 0 private allocs
CURSOR: 0 objects of 4 bytes = 0 total bytes 0 private allocs
DBE_WINDOW: 0 objects of 12 bytes = 0 total bytes 0 private allocs
TOTAL: 4 objects, 32 bytes, 0 allocs
./slimerjs: line 172: 4568 Aborted "$SLIMERJSLAUNCHER" -app $SLIMERDIR/application.ini $PROFILE -no-remote "$@" 2> /dev/null
/usr/bin/xvfb-run: line 171: kill: (4558) - No such process
hello.js의 내용입니다.
console.log("Hi");
var page = require("webpage").create();
console.log("Hi");
page.open("http://www.youtube.com/")
.then(function(status){
console.log("Hi");
if (status == "success") {
console.log("The title of the page is: "+ page.title);
}
else {
console.log("Sorry, the page is not loaded");
}
page.close();
setTimeout(function(){phantom.exit();},5000);
});
첫 번째 console.log만 실행됩니다. 처음에 10개의 연속된 console.log를 추가하면 모두 실행됩니다. 다음 코드는 이 setTimeout
함수를 실행하지 않습니다.
console.log("Hi");
setTimeout(function(){console.log("Hi");});
요약하자면, 코드를 실행하는 동안 console.log 이외의 다른 항목이 발견되면 거기서 중지됩니다.
slimerjs를 시도하기 전에 phantomjs를 시도했는데 훌륭하게 작동했습니다! slimerjs에 어떤 문제가 있는지 모르겠습니다. 아마도 xvfb로 실행하고 싶기 때문일까요?
답변1
나는 또한 다음을 얻습니다:
./slimerjs: line 172: 4568 Aborted "$SLIMERJSLAUNCHER" -app $SLIMERDIR/application.ini $PROFILE -no-remote "$@" 2> /dev/null
내가 달리는 것을 기억할 때까지 export SLIMERJSLAUNCHER=/usr/bin/firefox
.
Firefox가 설치되어 있어야 합니다.