2013-08-16 4 views
1

난 내가 할 필요가 그래서 제일 먼저 실행하고자하는 스크립트에/홈/PI/MYDIR을phpseclib SSH - 디렉토리를 변경하고 스크립트를 실행 하시겠습니까?

$ssh->exec('cd mydir'); 

다음

$ssh->exec('./script'); 

되어 있지만 그것은 누군가가 나를 도울 수 있도록 작동하지 않습니다 ?

+0

당신의 webserver에는 해당 스크립트를 실행할 권한이 없습니다. – ciruvan

+0

xampp을 사용하고 있으므로 어떤 권한이 필요합니까? – MordFustang

답변

1

이것은 exec() 작동 방식의 근본적인 제한 사항입니다. exec()는 마치 PuTTY를 열고 cd mydir을 입력하고 PuTTY를 다시 입력 한 다음 ./script을 입력하십시오. "./script"가 "mydir"에서 실행되는 것을 기대하지 않을 것입니다. 그러나 이것은 exec()가하는 일입니다.

그리고이 경우 phpseclib 문제가 아닙니다. SSH 문제와 관련이 있습니다. exec()는 SSH 사양에 정의 된대로 지원하지 않습니다.

상세 정보 :

http://phpseclib.sourceforge.net/ssh/examples.html#chdir

나의 추천 : 절대 경로의 사용하거나 (읽기 둘 중 하나 사용)/쓰기().

행운을 빈다.

+0

나는 읽기 쓰기를 시도하고 잘 작동하지만 프로그램/스크립트 (./video 샘플/테스트) 스크립트를 실행하려고하면 1 초 동안 작동 한 다음 한 가지 문제가 발생합니다. 어떤 soloution? – MordFustang

+0

로그는 약간의 통찰력을 제공 할 수 있습니다. 파일 맨 위에서'define ('NET_SSH2_LOGGING', 2);'을 수행 한 다음'echo '

' . $ssh->getLog() . '
'을 끝에 호출하면 얻을 수 있습니다. 로그를 받으면 게시하고 볼 수 있습니다. – neubert

+1

Ok 나는 프로세스를 죽이지 않아서 내 문제를 해결하므로 phpseclib 문제가 아니 었습니다. 어쨌든 도움을 주셔서 감사합니다. – MordFustang

2
cd /path/to/directory && your command 
나를 위해

임시 솔루션!

2

사용 \ 없음 :

$ssh->exec("cd mydir\n./script"); 

또는 파일 script.sh (예)를 만들고 UNIX 형식으로 저장 :이 스크립트

cd mydir 
./script 

간부 인 : 아마

$script = file_get_contents("script.sh"); 
$ssh->exec($script);