【问题标题】:php - how to get the return from mysqldump when I use exec()?php - 当我使用 exec() 时如何从 mysqldump 获得返回?
【发布时间】:2016-08-20 03:43:34
【问题描述】:

我想使用 exec() 函数从我的 php 脚本中使用 mysqldump。

我是在 php 中做到的

$com = "mysqldump --user=username --password=mypassword mydatabasename >c:\dump\test.sql";
$exec($com,$result); var_dump($result);

它总是在指定位置返回一个空的test.sql文件,而$result总是一个空数组。

问题是,当我在 CMD 中写下完全相同的行时,它有效!

我尝试使用 shell_exec(),结果也是空字符串。我也尝试添加 --host=localhost ,但也没有任何反应。

我在带有 Xampp 服务器的 Windows 本地机器上工作,我的 mysqldump 是 MariaDB。

  1. 为什么同一行在 CMD 中有效,但在 php 脚本中无效?

  2. 如何从 exec() 函数中获取结果以知道我的错误在哪里?

【问题讨论】:

  • 用户\文件权限问题可能
  • @Dagon 你的意思是mysqldump没有指定位置的写权限吗?
  • @Dagon 但是当我从 php 调用它时它会写入一个空文件。当我从 cmd 运行它 -mysqldump- 时,它会将完整的备份文件写入 same 位置。所以mysqldump 在这两种情况下都会写入文件夹。有什么我搞砸的吗?
  • 它是执行重要调用的用户,在一种情况下,它运行的任何 php 与您登录的其他情况一样
  • @Dagon 感谢您的时间和帮助,我明白了,当我将2> 添加到 mysqldump 时,它会输出错误

标签: php mysql


【解决方案1】:

https://serverfault.com/questions/249853/does-mysqldump-return-a-status

这个答案让我几乎哭了。 我终于goooooooot itttttt! 我在通话中添加了2>c:/dump/database.err,然后它终于输出了错误。

“mysqldump'不是内部或外部命令、可运行程序或批处理文件。”

我更正了完整的路径名并完成了它。哦,伙计,我讨厌编程:(

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-16
    • 2015-10-20
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多