난 내가 할 필요가 그래서 제일 먼저 실행하고자하는 스크립트에/홈/PI/MYDIR을phpseclib SSH - 디렉토리를 변경하고 스크립트를 실행 하시겠습니까?
$ssh->exec('cd mydir');
다음
$ssh->exec('./script');
되어 있지만 그것은 누군가가 나를 도울 수 있도록 작동하지 않습니다 ?
난 내가 할 필요가 그래서 제일 먼저 실행하고자하는 스크립트에/홈/PI/MYDIR을phpseclib SSH - 디렉토리를 변경하고 스크립트를 실행 하시겠습니까?
$ssh->exec('cd mydir');
다음
$ssh->exec('./script');
되어 있지만 그것은 누군가가 나를 도울 수 있도록 작동하지 않습니다 ?
이것은 exec() 작동 방식의 근본적인 제한 사항입니다. exec()는 마치 PuTTY를 열고 cd mydir
을 입력하고 PuTTY를 다시 입력 한 다음 ./script
을 입력하십시오. "./script"가 "mydir"에서 실행되는 것을 기대하지 않을 것입니다. 그러나 이것은 exec()가하는 일입니다.
그리고이 경우 phpseclib 문제가 아닙니다. SSH 문제와 관련이 있습니다. exec()는 SSH 사양에 정의 된대로 지원하지 않습니다.
상세 정보 :
http://phpseclib.sourceforge.net/ssh/examples.html#chdir
나의 추천 : 절대 경로의 사용하거나 (읽기 둘 중 하나 사용)/쓰기().
행운을 빈다.
나는 읽기 쓰기를 시도하고 잘 작동하지만 프로그램/스크립트 (./video 샘플/테스트) 스크립트를 실행하려고하면 1 초 동안 작동 한 다음 한 가지 문제가 발생합니다. 어떤 soloution? – MordFustang
로그는 약간의 통찰력을 제공 할 수 있습니다. 파일 맨 위에서'define ('NET_SSH2_LOGGING', 2);'을 수행 한 다음'echo '
' . $ssh->getLog() . ''을 끝에 호출하면 얻을 수 있습니다. 로그를 받으면 게시하고 볼 수 있습니다. – neubert
Ok 나는 프로세스를 죽이지 않아서 내 문제를 해결하므로 phpseclib 문제가 아니 었습니다. 어쨌든 도움을 주셔서 감사합니다. – MordFustang
cd /path/to/directory && your command
나를 위해
임시 솔루션!
사용 \ 없음 :
$ssh->exec("cd mydir\n./script");
또는 파일 script.sh
(예)를 만들고 UNIX 형식으로 저장 :이 스크립트
cd mydir
./script
간부 인 : 아마
$script = file_get_contents("script.sh");
$ssh->exec($script);
당신의 webserver에는 해당 스크립트를 실행할 권한이 없습니다. – ciruvan
xampp을 사용하고 있으므로 어떤 권한이 필요합니까? – MordFustang