2015-01-18 1 views
2
나는 casperjs 스크립트를 실행하기 위해 PHP를 사용하는 데 문제

phantomjs :PHP는/스크립트

다음과 같은 출력 결과
<?php 
putenv("PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs"); 
var_dump(exec("echo \$PATH")); 
exec("/usr/local/bin/casperjs hello.js website.com 2>&1",$output); 
var_dump($output); 

: 내가 할 수있는

string(43) "/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:." 
array(1) { 
    [0]=> 
    string(36) "env: node: No such file or directory" 
} 

유일한 유래 게시물을 내 경로에 문제가 있으며 PHP 사용자가 필요한 것을 액세스 할 수 없다는 것을 알게됩니다.

는 또한 시도 다음 sudo ln -s /usr/bin/nodejs /usr/bin/node

사람이 오류를 해결하기 위해 내가 할 또는 변경해야 할 것입니다 무엇을 알고 있나요?

감사합니다.

+0

혹시'#/usr/bin/env node'를 hello.js의 첫 번째 줄로 정의 했습니까? CasperJS는 노드가 아닌 PhantomJS 실행 환경에서 실행됩니다. 일반적으로 노드에 대한 참조가 없습니다. –

+0

감사합니다. @ArtjomB. 네가 제공 한 전화에 익숙하지 않아. 캐스퍼 스크립트 맨 위에 붙여 넣기 만할까요? –

+0

아니요, 그러지 마세요. 노드 참조의 출처를 모르겠습니다. –

답변

3

제 생각 엔 노드가 설치되어 있다고 가정합니다.

먼저, 명령 줄에서 php를 실행하고 있습니까? 나는. bash 쉘에 php test.php으로. 그렇다면 아래 명령을 그대로 실행할 수 있습니다. 웹 서버를 통해 환경이 다를 수 있습니다. 먼저 phpinfo(); script을 만들고 나서 shell_exec() 명령을 통해 문제 해결 명령을 실행하십시오. 그러나 그것이 고통 인 것처럼 나는 명령 행에서 먼저 작동하게하고, 웹 서버를 통해 실행될 때 동작이 다른 경우에만이를 뒤죽박죽으로 처리한다. (BTW, 당신은 cron 작업에서 실행하는 경우, 다시, 환경은 다소 차이가있을 수 있습니다. 그러나이 명령 줄에서 작동하지만 크론에서 작동하지 않는 경우이 걱정 만.)

문제 해결 hello.js

쉬운 것. 스크립트가 어디서나 node을 참조하지 않는지 확인하십시오. 또한 노드 모듈을 사용할 수 없음을 기억하십시오. 따라서 거기에 있어서는 안되는 명령어 인 require()을 찾으십시오.

bash는 아무것도가 있는지

실행 printenv | grep -i node 쉘의 문제를 해결합니다. 그러나 PHP가 쉘 명령을 실행할 때 다른 파일도 실행됩니다. 따라서 /etc/profile~/.bash_profile을 확인하십시오. /etc/profile.d/, /etc/bashrc~/.bashrc도 확인하십시오. 당신은 기본적으로 node을 언급하는 것을 찾고 있습니다.

문제 해결 phantomjs/casperjs 당신이 phantomjs 및 casperjs를 설치 했는가

? 실제 바이너리는/usr/local/bin 아래에 있거나 심볼릭 링크이거나 bash 스크립트이다. 예 : 내 컴퓨터에서 :

lrwxrwxrwx 1 darren darren 36 Apr 29 2014 casperjs -> /usr/local/src/casperjs/bin/casperjs 
lrwxrwxrwx 1 darren darren 57 Apr 29 2014 phantomjs -> /usr/local/src/phantomjs-1.9.7-linux-x86_64/bin/phantomjs 

을 그리고 각 파일 확인 :

cd /usr/local/bin 
ls -l casperjs phantomjs 

은주는 반면,

head /usr/local/src/casperjs/bin/casperjs 
head /usr/local/src/phantomjs-1.9.7-linux-x86_64/bin/phantomjs 

첫 번째 날 캐스퍼 실제로 파이썬 스크립트 #!/usr/bin/env python입니다 이야기를 두 번째는 정크로 화면을 채우며 이진 실행 파일이라고 알려줍니다.