Я хочу создать резервную копию из базы данных, но я получаю только пустой файл.
include('config.php'); $command = "mysqldump --opt -h ".$_host." -u ".$_user." -p ".$_pass." ".$_db." > test.sql"; exec($command); echo "<br />".$command;
test.sql создается там, где находится файл .php.
Редактировать:
Заметка! Я использую XAMPP WINDOWS!
Решение:
Поскольку я использую Windows Web Server (XAMPP), мне нужно указать путь:
$command = 'd:\xampp\mysql\bin\mysqldump --opt -u '.$_user.' -p'.$_pass.' '.$_db.' > test.sql';
-pMYPASSWORD
"
с помощью '
Я думаю, что если вы используете веб-сервер на базе Linux, вам не нужно указывать путь для mysqldump.
Ура! 🙂
Это параметры
-uROOT -pPASSWORD –databases DB -result-file = FILE.SQL
Попробуй это:
$command = 'd:\xampp\mysql\bin\mysqldump --opt -u '.$_user.' -p'.$_pass.' '.$_db.' > test.sql 2>&1';
– о проблеме разрешения.
Если вы посмотрите на руководство для exec, выход будет передан в массив, который является вторым аргументом. Это может быть источником проблемы.
Вы должны удалить пробел между -p и паролем.
--opt
не требуется с последними версиями mysql.
Кроме этого, ваш синтаксис правильный, поэтому, если он не работает с -p fix, вы должны проверить параметры и подготовленную команду.
Возьмите переменные из кавычек и удалите –opt.
Также убедитесь, что у вас есть уникальные имена файлов
$backupfile = $dbname . date("YmdHis") . '.sql';
$command = "D:\xampp\mysql\bin\mysqldump -u $_user -p$_pass $_db > $backupfile";
system($command);
Для тех, кто находится на Mac
Сегодня я борюсь с этой проблемой весь вечер. Глупая ошибка: нужно chmod директорию, в которую вы сбрасываете файл.
Я запустил это, чтобы устранить проблему:
chmod -R 777 your_dump_directory/
Попробуй это:
$DBUSER="user"; $DBPASSWD="password"; $DATABASE="DBname"; $filename = "backup-" . date("dmY") . ".sql"; $command = '"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump.exe" '.$DATABASE ." -u".$DBUSER ." -p".$DBPASSWD." > your_web_site/$filename"; passthru($command);
Затем принудительно загрузите файл:
if (file_exists("your_web_site/".$filename)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.basename($filename).'"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); readfile("your_web_site/".$filename); exit; }
Изменить. Вы должны предоставить разрешения для папки, в которой вы храните копии.