생성 된 sql 파일을 서버 a에서 서버 b로 전송해야합니다. 현재 나는 성공하지 않고 다음을 시도했다.PHP에서 파일 전송
// Some SQL executions to fill and update the tables
(..)
// Filename pattern
$fileName = "dump_".date("Y-m-d-H_i_s").".sql";
// Dump the tables and saves the output in dump directory
$dump = "mysqldump -u$USER -p$PASS $DB ".$this->dumpTables." > " . $this->path."dumps/". $fileName;
// Transfer the lastest sql file to the origin
$command = "scp " . $this->path."dbbackup/" . $fileName . " [email protected]:/PATH/dumps" . $fileName;
system($command, $retvalOrigin);
if ($retvalOrigin != 0) {
fwrite($this->logFileInstance, $this->date() . "Something went wrong! \r\n");
fwrite($this->logFileInstance, $this->date() . "$command! \r\n");
}
뭐가 문제 야?
내가 직접 명령을 실행하면 모든 것이 잘됩니다. 따라서 권한 문제는 없습니다. 내 오류 로그에 예기치 않은 로그 항목이 없습니다. vars없이 명령을 복사하고 이것을 새로운 PHP 파일에 넣고 이것을 호출하면 오류가 다시 발생하지 않습니다 .. 처음에는 thougt scp가 나를 싫어합니다. 그 이유는 "scp"를 "rsync -ave ". 저에게 오류는 없지만 파일을 원본 서버에 복사하지 않습니다 (다시 오류 로그가 없습니다!).
는 SCP -> $ retvalOrigin = 1, 원본 서버, 오류 로그에는 파일
는 rsync를 -> $ retvalOrigin = 0, 원본 서버, 오류 로그에는 파일
그래서 요점 무엇 없습니다 ?
는편집 :
경로, 실행중인 사용자와 www가 데이터에 대한 SSH 키 절대 - 더 이상 필요없이 로그인, $ RETVAL는 만 1/0, 및 NO 그것을 위해 사용하지 않습니다에 포함 cron
php.net :'return_var 인수가 있으면 실행 된 명령의 반환 상태가이 변수에 기록됩니다. '. '$ retvalOrigin'에 더 많은 정보가있을 가능성이 높습니다. 그 값을'print_r '해보십시오. – Michiel
@Michiel 그것은 1/0을 포함하고 있습니다. 그래서 도움이되지 않을까요? 다른 명령도 괜찮습니다. 예상 출력 (예 : ls) – Tyralcori
알겠습니다. scp 명령에'-v' 플래그를 추가하거나'exec' 명령으로 전환 해보십시오. – Michiel