【发布时间】:2014-11-05 04:44:59
【问题描述】:
嘿,我是 PHP 新手,正在尝试通过 php 脚本使用 mysqldump。
我已经尝试使用命令,转储过程成功。
情况是,当我尝试使用本地计算机转储时,转储成功。
但是当代码传输到服务器时,mysqldump没有工作。我已经尝试了几乎与 mysqldump 主题相关的解决方案,但仍然无法正常工作。我希望有人可以指导我。周全
<?php
/*-----------------------------------------------
MYSQLDUMP FOR SERVER
------------------------------------------*/
$dbhost = "*****";
$dbuser = "*****";
$dbpass = "*****";
$dbname = "*****";
//set date today
$today=date("d-m-Y");
//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);
}
?>
【问题讨论】:
-
你有任何错误或任何东西吗?你为什么要做一个mysqldump?,你知道这样做你需要很多权限才能在服务器上打开?
-
检查系统命令是否可以从php执行的权限。很多时候,由于权限问题,system 和 exec 命令在 php 文件中不起作用。
-
@Saikios 没有错误,只是根本没有转储文件。我已经尝试回显 $command,仍然没有错误。对于你的第二个问题,我从我的主管那里得到了使用 php 脚本备份数据库的任务。所以我尝试了mysqldump和查询,唯一成功的是mysqldump,两者都是在本地运行时。脚本传输到服务器时出现问题,当然我也已经更改了用户名和密码。
-
@WisdmLabs 我也尝试使用 shell_exec() 和 exec() 命令,但问题仍然存在。
-
您想要做的不是通过 php 脚本进行备份,而是通过 bash 脚本进行备份,但是您使用 php 对其进行了屏蔽,无论如何检查一下;)stackoverflow.com/questions/3751069/…