请教大家一个问题
$cmd = "\"".$basedir."bin\mysqldump.exe\" --default-character-set=latin1 -uroot -ptest ".$this->sql_handle->database." > ".$doc_root."\\test\\test.sql";
$stat = -1;
system($cmd,&$stat);
这段代码在windows里可以正确的导出数据库没有用过linux,请教大家,在linux下应该怎么修改?
$cmd = "\"".$basedir."bin\mysqldump.exe\" --default-character-set=latin1 -uroot -ptest ".$this->sql_handle->database." > ".$doc_root."\\test\\test.sql";
$stat = -1;
system($cmd,&$stat);
这段代码在windows里可以正确的导出数据库没有用过linux,请教大家,在linux下应该怎么修改?
".$doc_root."\\test\\test.sql" 路径分隔符是/
# File: /home/mysql/backup.sh
# Database info
DB_NAME="test"
DB_USER="username"
DB_PASS="password"# Others vars
BIN_DIR="/usr/local/mysql/bin"
BCK_DIR="/home/mysql/backup"
DATE=`date %F`# TODO
$BIN_DIR/mysqldump –opt -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BCK_DIR/db_$DATE.gz
我修后echo出来是上面的内容
但是为什么还是执行失败....
$stat = -1;
system($cmd,&$stat);
exec("mysqldump -uroot -p database table > /www/..... /sql.sql ");
没有 .exe
现在我修改了一下 echo 出来是
/usr/local/bin/mysqldump -uusername -ppwd dbname > /usr/local/www/data/test/test.sql然后我执行
$stat = -1;
system($cmd,&$stat);
好像还是有错。。 按照2楼的说法 -u -p后面加空格也是一样不能备份
我看了一下
system($cmd,&$stat);
执行完后 一直是返回的空 $stat的值一直是2
第二个参数本身是引用传递,不需要你去添加&。
我测试了一下,如果加上&,会报这个错误:
Fatal error: Call-time pass-by-reference has been removed in /www/admin/test.php
并且程序将不会执行。
我的PHP版本是5.4.0。建议你修正试试 system($cmd, $stat);
执行我给你的代码没。还有文件是否有写权限
$cmd = "mysqldump -uroot -ptest ".$this->sql_handle->database." > ".$doc_root."\\test\\test.sql";
exec($cmd);
$ds = 100;
system("/usr/local/mysql/bin/mysqldump -u root work > /www/datas.sql", $ds);
var_dump($ds);
root用户无密码,work是数据库名
var_dump($ds)输出 int(0)
我的输出是int(2); 不知道是哪儿有问题 我用的服务器是freebsd的
exec也试过了, 也没有能导出.
文件应该是有写权限的,因为我用ftp连过去看了,新建文件,修改,删除都可以
确定有/usr/local/bin/mysqldump 这个文件,具体可用
var_dump( system("ls /usr/local/bin") );看看有没有'mysqldump'
修改/usr/local/www/data/test/权限到所有用户可写
一直都是直接在本机终端下做这些,用php没做过所以只能给你这点建议