Использование PHP-скрипта: почему mysqldump не сбрасывает sql-файл?

Хе, я новичок в PHP и пытаюсь использовать mysqldump, используя php-скрипт.
Я уже пытаюсь использовать команду, и процесс дампа имеет успех.
Ситуация заключается в том, что когда я попытался выполнить дамп с помощью моего локального компьютера, свалка будет успешной.
Но когда код передается на сервер, mysqldump не работает. Я пробовал почти решение, связанное с темами mysqldump, но все равно это не работает. Надеюсь, кто-то может вести меня. TQ

<?php /*----------------------------------------------- MYSQLDUMP FOR SERVER ------------------------------------------*/ $dbhost = "*****"; $dbuser = "*****"; $dbpass = "*****"; $dbname = "*****"; //set date today $today=date("dmY"); //set file name $filename = "leave_".$today.".sql"; //MYSQLDUMP //For Server $command = sprintf("/usr/bin/mysqldump --opt -h%s -u%s -p%s %s >/var/www/html/leave/leave/backup/%s", //for local //$command = sprintf("c:\AppServ\MySQL\bin\mysqldump --opt -h%s -u%s -p%s %s > %s", $dbhost, $dbuser, $dbpass, $dbname, $filename ); system($command); /*------------------------------------------------------------- TO SAVE FILE SQL INTO LOCAL ---------------------------------------------------------------*/ $file = "leave_".$today.".sql"; if(!$file) { // File doesn't exist, output error die('File not found'); } else { // Set headers to ask user where to save file. header('Pragma: anytextexeptno-cache', true); header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private", false); header("Content-Type: text/plain"); header("Content-Disposition: attachment; filename=$file"); // Read the file from disk readfile($file); } ?> 

Хорошо, на самом деле я уже решу эту проблему через несколько дней после того, как поставил вопрос. К сожалению, у меня не хватило репутации, чтобы опубликовать ответ. Вот и мы идем.

Вот несколько вещей, которые необходимо ПРИНИМАЮТ ПРИМЕЧАНИЕ : –

  1. Обязательно использовать абсолютный путь для дампа MySQL.
  2. Попробуйте использовать –opt (опция по умолчанию для дампа MySQL). Подробнее читайте здесь .
  3. Для опции, если используется короткая форма, не нужно иметь (-). например: -p. Используйте (-) при использовании полной формы. например: –password. Поэтому используйте '-p' вместо '-p' (также для других вариантов).
  4. попробуйте 'shell_exec' или 'system', если mysqldump не работает в 'exec'.
  5. попробуйте избежать пробелов между опцией и переменной. Например: -p $ dbpass

* Также несите с ума, он связан с разрешением, может ли исполняться системная команда с php или нет.

Я предполагаю, что ваш php разрешает выполнение команд через system ().

вы не работаете в безопасном режиме или, если хотите, safe_mode_exec_dir содержит все необходимые вам команды