2014-01-09 3 views
0

PHP를 사용하여 서버 1에서 서버 2로 파일을 보내는 쉘 스크립트를 실행하고 싶습니다. 서버 1의 공개 키가 authorized_keys 서버 2에 기록되어 완벽하게 작동합니다. 다음 스크립트는 실제로 서버 2 서버 1에서 파일을 전송하지 않습니다 어떤 이유로 PHP에서 scp로 쉘 스크립트를 실행하는 경우

: 그래서

// This is a webpage at http://server1.com/sendfile.php 
<?php 
if($_POST['a']) 
{ 
     echo '<pre>'; 
     echo passthru('./scp.sh'); 
     echo '</pre>'; 
} 
?> 

<form method="post"> 
<button name="a" value="Af">Send File</button> 
</form> 

//This is the contents of scp.sh 
scp ../dbexport/db.txt [email protected]: 

내가 터미널에서 scp.sh에서 실행, 모든 것이 잘 작동 - 파일이 실제로 보내지 및 받았습니다.

http://server1.com/sendfile.php에 가서 단추를 누르면 php 파일이 실제로 쉘 파일을 실행합니다 (scp 명령 전후에 echo 문을 넣어 확인했습니다). 그러나 파일은 server2.com에 의해 성공적으로 수신되지 않습니다.

왜 이런 사람 일지 알 수 있습니까?

+1

웹 서버 계정의 authorized_keys에 키를 추가 했습니까? 권한으로 실행되는 셸에서 작동하기 때문에 웹 서버의 ID로 실행되는 셸에는 아무런 영향을주지 않습니다. –

+0

우우 yeahhhhh .... 내가 그걸 잊었 어 – John

+0

맙소사. 고마워, 마크! – John

답변

0

마크 B는

을 사용하면 웹 서버의 계정의 authorized_keys 파일에 키를 추가 않았다 여기에 게시 ... 코멘트 내 질문에 대답? 권한으로 실행되는 셸에서 작동하기 때문에 웹 서버의 ID로 실행되는 셸에는 아무런 영향을주지 않습니다. - 19시 47분

에서 마크 B 1월 9일는 yeahhhhh 우 .... 내가 그것에 대해 잊고 - 존 1월 9일을 19시 57분

에서이 일 그래. 고마워, 마크! - John Jan 9 at 20:42