Я пытаюсь получить резервную копию базы данных через PHP. Я использую Yii с PostgreSQL. Я пробовал приведенный ниже код и работает на моем локальном сервере Wamp. Но приведенный ниже код не работает на сервере Windows Server 2008 R2. Если я повторяю результат соединения (», $ dumpcmd) и копирую его в командную строку, то он работает.
public function actionBackup()
{
$path = Yii::app()->basePath . '/data/backup/';
$file=$path."data.backup";
unlink($file);
putenv("PGPASSWORD=postgres");
$dumpcmd = array("pg_dump", "-i", "-U", escapeshellarg("postgres"), "-F", "c", "-b", "-v", "-f", escapeshellarg($file), escapeshellarg("mydb"));
exec( join(' ', $dumpcmd), $cmdout, $cmdresult );
putenv("PGPASSWORD");
if ($cmdresult != 0)
{
# Handle error here...
echo "Error: couldn't backup the data.";
print_r($dumpcmd).'<br>';
print_r($cmdout).'<br>';
print_r($cmdresult).'<br>';
}
else {
$this->renderPartial('download_backup',array('file'=>$file));
}
}
print_r переменных ниже
Array ( [0] => pg_dump [1] => -i [2] => -U [3] => "postgres" [4] => -F [5] => c [6] => -b [7] => -v [8] => -f [9] => "path_to/data/backup/data.backup" [10] => "mydb" ) Array ( ) 1
Задача ещё не решена.
Других решений пока нет …