문제

PHP를 사용하여 서버 1에서 서버로 파일을 보내는 쉘 스크립트를 실행하고 있습니다. 서버 2 Authorized_Keys에 쓰여진 서버 1 공개 키가 있으며 완벽하게 작동합니다.

어떤 이유로 다음 스크립트는 실제로 서버 1에서 서버 2로 파일을 보내지 않습니다.

// 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 someuser@server2.net:
.

터미널에서 scp.sh에서 실행할 때 모든 것이 잘 작동합니다. 실제로 파일이 실제로 전송되고 수신됩니다.

그러나 http://server1.com/sendfile.php로 가서 버튼을 누르면 PHP 파일은 실제로 쉘 파일을 실행합니다 (scp 명령 전후에 Echo 문을 넣어 확인)하지만 파일은 server2.com에서 성공적으로 수신되지 않습니다

왜 이것이 왜 그렇게 될지를 알고 있습니까?

도움이 되었습니까?

해결책

Marc B는 내 질문에 댓글을 달았습니다 ... 여기 게시

WebServer 계정의 Authorized_Keys에 키를 추가 했습니까?사용 권한에서 실행중인 셸에서 작동하기 때문에 웹 서버의 ID로 실행되는 쉘에 절대적으로 아무 것도 없음을 의미합니다.- MARC B 1 월 9 일 19:47

ooooh yeahhhhhh .... 나는 그것을 잊어 버렸습니다 - John 1 월 9 일 19:57

yup 일했습니다.고마워 마크!- 존 1 월 9 일 20:42

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top