2014-09-07 6 views
1

phpseclib0.3.7 라이브러리를 사용하여 SFTP를 통해 웹 서버에 연결합니다. 존재하는 사용자가 다음 구조를 갖는다 :sftp 및 php 파일 업로드

/dirhome/FirstUser/FirstUser/ 
/dirhome/SecondUser/SecondUser/ 
/dirhome/....../..... 

여기서

dirhome: 
     own  -> root:root 
     permission -> 700 
    FirsUser: (is the name of a user (example)) 
     own  -> root:root 
     permission -> 755 
    FirsUser: (is the name of a user (example)) 
     own  -> FirstUser:mygroup 
     permission -> 700 

번째 사용자 등에 대해 동일한 구조. 이 기능을 통해 사용자는 자신의 디렉토리에서만 내용을보고 편집하고 만들 수 있습니다.

라이브러리 및 뷰 폴더/파일을 사용하여 PHP로 쉽게 연결할 수 있지만 개인 폴더 내의 원격 서버에있는 사용자의 로컬 PC에서 파일을 업로드하는 방법을 알지 못합니다.

라이브러리는 방법을 제공 :

->put($remotepath, $localpath, NET_SFTP_LOCAL_FILE); 

위원장의 problema의 è : 가 어떻게 사용자가 사용자의 PC에있는 파일을 선택하고 그녀의 개인 디렉토리에 업로드 할 수 있도록하는 대화 상자를 열 수 있습니까?

내가 넣어 경우 C:\\Users\\****\\Desktop\\test.txt is not a valid file

을하지만 서버가 잘 작동에 로컬로 상주하는 파일을 가지고 있지만, 경우에 사용자가 해당 파일을 넣을 수 있기 때문에 이해가되지 않습니다 : $localpath = "C:\\Users\\****\\Desktop\\test.txt"

내가 얻을 . 몇 일간 노력했지만 성공하지 못했습니다. 다운로드가 작동하지 않습니다. 본질적으로 동일한 문제입니다.

+3

PHP가 서버에서 실행 중입니다. 따라서 각 사용자의 컴퓨터에 저장된 파일에 액세스 할 수는 없습니다. 두 단계로이 작업을 수행해야합니다. 먼저 PHP 스크립트가 실행되고있는 서버에 HTTP Post를 사용하여 파일을 업로드하십시오. 그런 다음 SFTP를 사용하여 파일을 서버에 복사합니다. –

+0

@ JohannesH. 왜 이걸 대답하지 그래? –

+0

@ JohannesH. 승인! 그런 다음 "두 단계"를 적용하십시오. 다운로드가 똑같은 것을 상상해보십시오! – user2263764

답변

1

PHP는 서버 측 스크립팅 언어입니다. 브라우저가 PHP 생성 사이트를 요청하면 PHP가 서버에서 실행되므로 브라우저는 결과 만 볼 수 있습니다. 따라서 PHP는 클라이언트 측 파일에 액세스 할 수있는 방법이 없습니다. 클라이언트 컴퓨터에 도달하기 전에 이미 실행되었습니다.

PHP 파일이있는 서버를 사용하고 SFTP 서버가 다른 서버라고 가정합니다. 그렇지 않으면 전체 질문이 너무 의미가 없습니다.

여기에서해야 할 일은 두 단계 접근법입니다. 먼저 HTTP POST 요청을 사용하여 PHP 파일을 정상적으로 실행하는 서버에 파일을 업로드해야합니다. 요청을 PHP 스크립트에 보내면 SFTP를 사용하여 파일을 다른 서버로 옮길 수 있습니다. 다운로드


(당신이 당신의 의견에서이 질문으로)가 유사한 작동 : 브라우저는 SFTP 서버에서 파일을 가져 오는 PHP 스크립트를 요청하고 HTTP 응답으로 브라우저로 전송한다. 그러면 브라우저는 일반 파일 다운로드 대화 상자를 표시하고 사용자는 저장할 위치를 선택할 수 있습니다. 당신은 cron 작업의 일종 또는 백그라운드 작업을 사용하는 것이 좋습니다 업로드


중 하나를 당신은 가장 가능성으로하는 최대 실행 시간 초과로 실행하거나 경우에해야보다 훨씬 더 높은를 설정해야합니다, 대신 PHP의 exec()를 사용하기 시작 특히 대용량 파일의 경우 PHP를 사용하여 업로드하십시오. 대안은 별도의 PHP 구성을 사용하는 것입니다 (실행중인 PHP 버전에 따라 .htaccess 파일, .user.ini 파일 또는 다른 PHP-FPM 풀을 사용하여 업로드 스크립트의 실행 시간을 늘릴 수 있음). .