2009-04-20 2 views
0

PHP를 통해 mysql 덤프를하려고합니다. mysqldump 패스 스루 리턴 코드의

코드

$backupFile = $table. "-". date("Y-m-d-H:i:s") . '.gz'; 
    //Command nog aanpassen.... 
    $command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile"; 
    //$status = system($command); 
    echo $backupFile ."<br>"; 
    $status = passthru($command, $a); 
    echo "output:" . $a; 

$ A = 2의 값입니다 그러나 나는 그것이 무엇을 의미하는지 찾을 수 없습니다. 나는 또한 어디서나 백업 파일을 찾을 수 없습니다.

아이디어가 있으십니까?

답변

2

이것이 문제가되는지 잘 모르겠지만 암호 전달 매개 변수가 올바르지 않습니다.

당신과 같이 공백없이 바로 옆에 암호가 필요 -p 당신이 사용하는 경우 :

$command = "mysqldump --opt -h $dbhost -u $dbuser -p$dbpass $dbname | gzip > $backupFile"; 

또는 --password = $ dbpass 긴을 사용합니다.

--password [= 암호] -p [암호]에 연결할 때

암호 사용할 다음의 mysqldump 매뉴얼 페이지에서

$command = "mysqldump --opt -h $dbhost -u $dbuser --password=$dbpass $dbname | gzip > $backupFile"; 

예 :

서버. 짧은 옵션 양식 (-p)을 사용하면 옵션과 암호 사이에 공백을 사용할 수 없습니다. 명령 행에서 --password 또는 -p 옵션 다음에 암호 값을 생략하면 프롬프트가 표시됩니다.

0

백업 대상이 될 수도 있습니다. mysqldump를 (당신의 경우 www-data 또는 다른 아파치 사용자로) 실행중인 사용자가 백업을 쓰려고하는 디렉토리에 대한 쓰기 권한을 가지고 있는지 확인하십시오. 내가 커맨드 라인에서 명령을 시도해 볼 것입니다. .. 그리고 그것은 잘 작동합니다.하지만 저는 root이거나 내 사용자입니다. www가 아닌 ​​데이터입니다.