2012-01-21 34 views
0

我有这样的代码:mysqldump的不工作:(

function export() 
{ 
    $exp = system("mysqldump -uguku -pjustbe repadmin > back-up.sql"); 
    if($exp) {echo 'ok';} 
    else { echo 'err';} 
} 

但它不工作,它所做的,就是要打造“背up.sql”的文件,但它是空白。 我也得到了“错误”的消息。

+1

首先你应该看看是否运行:mysqldump -uroot -p repadmin在控制台上工作。你做的mysql_connect,mysql_select_db与system()调用无关。 2种不同的东西。 – spotman

+0

它从控制台工作得很好,它不从php脚本 :(,这是在控制台上工作的线路: “mysqldump -uguku -pjustbe repadmin> back-up.sql”,并在“ bin“文件夹中创建一个带有这个名字的文件,它可以工作,当我在PHP页面上运行这个脚本时,会创建”back-up.sql“文件,但是它里面没有代码 –

+0

'-p'会提示除非你给它一个值,否则你目前没有给你的代码赋值。 –

回答

1

尝试使用完整的路径mysqldump的...

$exp = system("/full/path/mysqldump -uroot -p repadmin > back-up.sql");

which mysqldump会告诉你的路径应该是什么。

+0

无论如何,我输入完整的路径,简单或括号...在PHP中它不工作,在控制台是,完美的,但在脚本上,没有:( –

1

这里有一个命令运行不正常。最好的办法是捕获stderr(错误消息去哪里)并查看输出结果。另外需要注意的是环境变量将会不同 - 比如PATH(由上面的@Joshua_Martell引用)。

使用此命令捕获标准错误,看看是什么错误信息正在制作:

/usr/bin/mysqldump -uguku -pjustbe repadmin > back-up.sql 2> mysqldump.err 

这也采用了全路径mysqldump(使用正确的道路)。你也可能应该添加一个路径到back-up.sql,在这种情况下,到mysqldump.err - 不要以为PHP会运行在你想要的目录中,因为它可以可能更改。