Я пытаюсь создать периодическую резервную копию (бедный мужской cron) моей базы данных с помощью mysqldump
с функцией exec()
. Я использую XAMPP/PHP7 на macOS.Невозможно выполнить mysqldump из PHP-скрипта
$command = "$mysqldump_location -u$db_user -h$db_host -p$db_password $db_name > $backup_file_location";
exec($command);
Когда я бег PHP скрипта, я не получаю SQL дампа в пути, указанном в $backup_file_location
, но если я выполняю те же $command
строку на терминале непосредственно я получаю нужный файл SQL в нужном месте.
Я не могу понять, что может быть проблемой здесь. Также открыты предложения по лучшим способам сброса всей БД.
Edit 1:
Значение $mysqldump_location
является /Applications/XAMPP/xamppfiles/bin/mysqldump
Значение $backup_file_location
является /Applications/XAMPP/xamppfiles/htdocs/app5/data/sqldumps/sql_data.sql
/app5/
это папка, в то время как я разрабатываю мое приложение.
Редактировать 2: Возможное дублирующее предложение не применяется, поскольку проблема здесь не в том, как сбрасывать резервные копии SQL. Ключевая проблема заключалась в том, что резервное копирование с использованием mysqldump работало через терминал, но не через функцию exec() PHP.
Покажите нам значения всех этих переменных или, по крайней мере, '$ backup_file_location' – RiggsFolly
Мы понятия не имеем, какие значения имеют ваши переменные PHP, например' $ mysqldump_location' и '$ backup_file_location' и т. д. Я предлагаю вам записать финальную команду в' $ command' и посмотреть, что вы ожидаете. –
все вышесказанное и убедитесь, что php имеет разрешение на запись в этот каталог – nogad