mysqldump не выполняется через PHP - PullRequest
0 голосов
/ 28 марта 2012

Я использую функцию php exec, чтобы попытаться сделать резервную копию базы данных, но, похоже, она не работает.Я пробовал разные варианты:

$dbuser = "root";
$dbpwd = "somepass";
$dbhost = "localhost";
$db = "somedb";
$dir = "/var/www/backup/";
$filename = $db.".sql";

exec('/usr/bin/mysqldump -u '.$dbuser.' -p'.$dbpwd.' -h '.$dbhost.' '.$db.' > '.$dir.$filename);

Это работает через SSH, вошедший в систему как root.Кажется, что -p не работает с пробелом, поэтому, когда я его забрал, он работал через SSH.Когда я запускаю whoami из exec в PHP, я получаю apache.Это было бы проблемой?Если так, то как бы это исправить?

Это окно linux.Я не получаю никаких ошибок в PHP-скрипте (для уверенности установите display_errors наверху), и команда exec ничего не дает.

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

Если он работает, войдя в систему как пользователь root, а не как другой пользователь, и вы уверены, что в команде нет ничего другого (точно такой же пользователь, пароль и т. Д.), Наиболее вероятной проблемой являются разрешения. В данном случае это каталог, в котором хранится файл.

0 голосов
/ 28 марта 2012

Уродливое решение: создайте пользователя mysql, который может только читать материалы (не обновлять, не удалять и т.Так что вам не нужен параметр -p.

...