Я пытаюсь восстановить содержимое бинарного файла журнала MySQL с помощью PHP с виртуальной машины, в которой я запущен. Я запускаю CentOS на виртуальной машине и LAMP.PHP и mysql файл двоичного журнала
У меня есть 4 виртуальных компьютера, работающих в виртуальной сети, все они расположены в одной подсети, а базы данных MySQL работают и работает, и репликация работает.
Я пытаюсь восстановить содержимое журнала регистрации хозяина с помощью PHP. Обычно содержимое файла может быть восстановлен с помощью следующей команды:
shell> mysqlbinlog [options] log_file
я написал скрипт, который выполняет команду оболочки на локальной машине:
$cmd="mysqlbinlog /var/lib/mysql/provider-bin.000003";
echo "<pre>".shell_exec($cmd);
Я проверил, что поставщик -bin.000003 существует и что функция shell_exec работает и не отключена.
Проблема возникает, когда я выполняю команду на консоли. Я получаю содержимое файла bin, но сценарий PHP не выводит ожидаемый результат.
Он выводит следующую вместо:
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @[email protected]@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET [email protected]_COMPLETION_TYPE*/;
Update: EXEC
Я также попытался с помощью EXEC функции ADN выводит то же самое:
$cmd="mysqlbinlog /var/lib/mysql/provider-bin.000003";
print_r(exec($cmd,$ret_value)) . "<br />DONE";
echo "<pre>".shell_exec($cmd." 2>&1");
Высокую оценку
Имеет ли интересующий файл/каталог соответствующие разрешения, позволяющие пользователю PHP/Apache получить к нему доступ? Обратите внимание, что запуск командной строки в консоли не обязательно совпадает с тем, что PHP делает то же самое для вас (пользователю PHP не разрешается делать то, что вы можете с консоли). –
Я выполняю скрипт PHP как задание cron, поэтому он должен иметь права root. Я проверяю разрешения на данный момент, используя команду whoami. Я отдам его, и если проблема возникнет оттуда, я удалю этот вопрос. – thedethfox
Вам необязательно удалять вопрос. Не стесняйтесь отвечать на свой вопрос, если хотите ... таким образом люди, у которых есть подобная проблема в будущем, будут знать, что делать. –