【发布时间】: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。
为什么同一行在 CMD 中有效,但在 php 脚本中无效?
如何从 exec() 函数中获取结果以知道我的错误在哪里?
【问题讨论】:
-
用户\文件权限问题可能
-
@Dagon 你的意思是mysqldump没有指定位置的写权限吗?
-
@Dagon 但是当我从 php 调用它时它会写入一个空文件。当我从 cmd 运行它 -
mysqldump- 时,它会将完整的备份文件写入same位置。所以mysqldump在这两种情况下都会写入文件夹。有什么我搞砸的吗? -
它是执行重要调用的用户,在一种情况下,它运行的任何 php 与您登录的其他情况一样
-
@Dagon 感谢您的时间和帮助,我明白了,当我将
2>添加到 mysqldump 时,它会输出错误