2011-06-14 5 views
1

rar 아카이브에서 파일을 삭제하려고합니다. /usr/bin/rar d rar_file.rar del.txt을 실행하는 경우이 명령은 rar_file.rar에서 del.txt 파일을 삭제합니다.PHP exec rar 파일 삭제

나는 이것을 exec()를 사용하여 실행하려고하지만 작동하지 않습니다.

/usr/bin/rar d '/var/www/temp/temp.rar' teste.txt 
Array 
(
    [0] => 
    [1] => RAR 3.90 beta 2 Copyright (c) 1993-2009 Alexander Roshal 3 Jun 2009 
    [2] => Shareware version   Type RAR -? for help 
) 

는 RAR에서 teste.txt 파일을 삭제하지 않았나요 :

<?php 
$file = realpath("temp/temp.rar"); 
chmod($file, 0777); //make sure I can handle the file 
if(file_exists($file)){ //Make sure that the file exists 
    $rar = escapeshellarg($file); 
    echo "/usr/bin/rar d $rar teste.txt"; //Lets see the command 
    exec("/usr/bin/rar d $rar teste.txt", $r); 
} 
echo "\n"; 
print_r($r); 
?> 

여기 내 출력합니다.

그러나 나는 /usr/bin/rar d '/var/www/temp/temp.rar' teste.txt 명령을 복사하여 터미널에서 실행했습니다. 여기 내 출력입니다 :

[email protected]:~$ /usr/bin/rar d '/var/www//temp/temp.rar' teste.txt 

RAR 3.90 beta 2 Copyright (c) 1993-2009 Alexander Roshal 3 Jun 2009 
Shareware version   Type RAR -? for help 

Deleting from /var/www/temp/temp.rar 
Deleting teste.txt 
Done 

완벽하게 작동하지만, PHP는 간부에하지 않았다. 나는 파일 권한으로 생각하지 않는다. 사용자 www-data가 rar 파일을 만들었고 (나는 전에 생성했다.) 나는 문제없이 777에 권한을 설정했다.

저는 리눅스를 사용하고 있습니다.

내가 뭘 잘못하고있어? 덕분에 !

+0

나는 내가 한 일을 싫어했지만 일했습니다. 나는 다음 분에 rrun에 cron 작업을 추가했고 cronjob은 rar에서 파일을 삭제했습니다. cronjob은 exec ("crontab file.txt")를 실행하여 쉽게 추가 할 수 있습니다. 어쩌면 나는 이것을 해결책으로 사용하지만, 왜 여전히 exec가 작동하지 않았는지를 알고 싶다. – StiveKnx

+2

메시지의'error.log'를 살펴 보거나 exec 명령 뒤에'2> & 1'을 추가하여 오류 출력을 표시한다. – mario

+0

감사합니다. 해결책을 찾았습니다. 2> & 1을 추가하면 임시 rar 파일을 만들 수있는 권한이 거부되었습니다. 그래서 저는 www 경로를 chmod (스크립트가 실행되는 곳)에서 알았고 작동합니다! – StiveKnx

답변

1

솔루션 :

당신이 어떤 이유로 간부() 스크립트를 마무리하기 전에 중지를 간부 인()를 사용하여 뭔가를 실행

... 이것은 내가 한 한 많은 스크립트를 추가합니다.

그래서 mario의 솔루션을 사용하면 2>&1을 명령에 추가하고 exec()는 스크립트가 끝나면 중지합니다.