2010-01-31 2 views
1

는 PHP에서 타르를 사용하여 폴더를 보관할 :PHP 쉘 타르 문제, 리턴 코드는 2

$result = shell_exec("tar cf $sourceFile $sourceFolder -C $source > /dev/null; echo $?"); 
var_dump($result); 

출력 :

> /dev/null; echo $? 것은 아래 스크립트의 결과 코드를하고 출력하기위한 것입니다
string(2) "2 " 

리눅스;

-C $source -이 내가 리눅스 콘솔에서이 프로그램을 실행할 때, 그것은 잘 작동하기 때문에 정말 이상한 아무것도

을하기 전에 올바른 폴더로 변경 - 그것은 권한 문제가되지 않습니다 그래서, 아카이브를 생성합니다.

"whoami"또는 "ls"와 같은 다른 문장은 정상적으로 작동합니다.

어떤 아이디어가 무슨 뜻입니까?

+0

로그 내용은 무엇입니까? 오류에 대한 언급이 있어야합니다. 또한/dev/null 대신 파일에 출력을 작성하여 진행 상황을 확인한 다음 거기에서부터 시도해 볼 수 있습니다. – prodigitalson

답변

1

미정 : shell_exec("/bin/bash tar ....") 디버깅 목적은 표준 출력에 열려진 리디렉션 (아마도 오류 메시지 포함) 전체 출력을 표시 경유()를 사용하여 단지에 대한

0

.

$cmd = sprintf("tar cf %s %s -C %s 2>&1", 
    escapeshellarg($sourceFile), 
    escapeshellarg($sourceFolder), 
    escapeshellarg($source) 
); 

echo '<pre>', htmlspecialchars($cmd), ": \n"; 
flush(); 
passthru($cmd, $code); 
var_dump($code); 
echo "</pre>";