안녕하세요, 저는 PHP에 익숙하며 PHP 스크립트를 사용하여 mysqldump를 사용하려고합니다.
이미 명령 사용을 시도했으며 덤프 프로세스가 성공적입니다.
상황에 따라 로컬 컴퓨터를 사용하여 덤프를 시도하면 덤프가 성공합니다.
그러나 코드가 서버로 전송되면 mysqldump가 작동하지 않습니다. mysqldump 주제와 관련된 거의 솔루션을 시도했지만 여전히 작동하지 않는다. 나는 누군가가 나를 인도 할 수 있기를 바랍니다. TQPHP 스크립트 사용 : mysqldump가 sql 파일을 덤프하지 않는 이유는 무엇입니까?
<?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를하고 싶습니까?이 작업을 수행하기 위해서는 서버에서 열려야하는 많은 권한이 필요하다는 것을 알고 있습니까? – Saikios
시스템 명령을 PHP에서 실행할 수 있는지 여부를 확인하십시오. 여러 번, 시스템 및 exec 명령은 권한 문제로 인해 php 파일에서 작동하지 않습니다. – WisdmLabs
@Saikios 오류가 없습니다. 단지 덤프 파일이 전혀 없습니다. 나는 echo 명령을 시도했지만 여전히 오류는 없다. 귀하의 두 번째 질문에 대한, 나는 PHP 스크립트를 사용하여 데이터베이스를 백업하기 위해 상사의 작업을 가지고. 그래서 나는 mysqldump와 쿼리를 시도했다. 단 하나의 성공은 mysqldump 다. 둘 다 로컬에서 실행된다. 문제는 스크립트가 서버로 전송 될 때 발생합니다. 물론 이미 사용자 이름과 암호도 변경합니다. –