2012-12-23 3 views
3

여기에서 단 하나의 질문 만 보았지만 내 질문에는 대답하지 않습니다. 저는 Redhat Linux에서 PHP 5와 MySQL 5를 최신으로 유지하는 전형적인 램프 서버를 운영하고 있습니다.PHP 만 사용하여 비밀번호가있는 ZIP 파일을 추출하는 방법은 무엇입니까?

내 호스트에서 쉘을 사용할 수 없기 때문에 PHP 전용 솔루션을 찾아야합니다. 확실히, 단지 PHP를 사용하여이 작업을 수행하는 몇 가지 방법이 있어야합니다

if ($_GET['add'] == TRUE){ 
$zip = new ZipArchive; 
$res = $zip->open($SOURCE FOLDER); 
if ($res === TRUE) { 
    $zip->extractTo('$DESTINATION FOLDER/'); 
    $zip->close(); 
    echo 'File has been added to the library successfuly'; 
    //Add a flag to that file to indicate it has already been added to the library. 
    mysql_query("UPDATE attachment SET library = 1 WHERE filedataid='$fileid'");  
} else { 
    echo 'A uncompression or file error has occured'; 
}} 

:

는 여기에 또 다른 디렉토리에 vBulletin에 업로드에서 passworded되지 ZIP 파일을 추출 내 코드입니다! 고맙습니다.

업데이트 : 내 호스트는 gzip이 서버에 설치되었지만 7-Zip이 아니라고 알려줍니다. 나는 쉘 접근을 찾고있다.

+0

하면, 쉘이 옵션을 선택하지 않습니다 말한다) 당신이 시스템을 (호출 할 수 있음을 의미합니까, 또는 당신이에 로그인 할 수 없음을 의미합니까 쉘이있는 서버. – DWright

+0

서버에 연결할 수 없습니다. 현재 시스템() 액세스에 대해 내 호스트에 요청하고 있습니다. – joshkrz

+0

php가 system()을 호출 할 수 있는지 여부에 따라 호스트에 unzip 실행 파일이 설치되어 있는지 확인할 수도 있습니다. 내 대답 편집. – DWright

답변

4

스크립트에서 사용할 수있는 7zip 실행 파일을 가지고 system()을 통해 암호가있는 파일의 압축을 풀도록 호출하십시오.

$strCommandLine = "7z e fileToUnzip.7z -pTHEPASSWORD"; 
system($strCommandLine); 

호스트가 설치된 경우 unzip과 비슷한 기능을 수행 할 수 있습니다. http://linux.about.com/od/commands/l/blcmdl1_unzip.htm을 참조하십시오.

그것은 암호로 -P 지원하므로 이런 식으로 뭔가 :

$strCommandLine = "unzip fileToUnzip.7z -P THEPASSWORD"; 
system($strCommandLine); 

경고 : 누군가가 시스템에 PS를 할 경우 해당 명령 줄에서 비밀번호를 확인하고 압축 해제 명령이 실행 볼 수 있었다.

+1

OP에서 언급했듯이 포격은 옵션이 아닙니다 ... – Basic

+0

그 비트를 놓쳤습니다. – DWright

+0

아쉽게도 7-zip이 내 서버에 설치되어 있지 않습니다. 그러나 제 호스트는 Gzip이 있다고 알려줍니다. – joshkrz

관련 문제