不能调用exec(mysql <quicktest.sql)


Can not call exec(mysql < quicktest.sql)

我无法在WAMP安装上执行以下PHP代码行:

exec("mysql < quicktest.sql --user=root --password=password");
  • 实际的sql文件非常简单,从PhpMyAdmin
  • 工作良好我可以运行mysql <quicktest……等等,它工作得很好>
  • 我可以执行()其他命令从php没有问题,例如exec("dir");我正在调用exec("mysql <</li>
  • 已尝试用引号替换双引号
  • 已尝试转义目录分隔符
  • 尝试重新定位quicktest。尝试重新定位quicktest。sql到根目录
  • 尝试将输出分配给一个变量,它出现空白(但mysql命令行无论如何都不返回任何东西?)
  • 尝试将数组作为第二个参数传递给exec语句以捕获任何错误,但再次出现空白

任何想法?感谢!

我看到的主要问题是--user=root --password=password应该在<之前

还是问题吗?

尝试使用完整路径来快速测试。SQL而不仅仅是文件名。我的猜测是,尽管您尽了最大的努力,但您没有使用正确的目录。

您可以在exec中运行pwd来查看它是从哪个路径运行的。

另一个潜在的问题是权限。在sudo下运行php脚本,看看这是否解决了问题。

同样的事情也发生在我的同事身上。Apache不知道mysql在哪里。通过将mysql路径添加到windows的系统变量中来解决这个问题。

为WinXP

  1. 右键单击您的计算机
  2. 点击"属性"
  3. 点击"高级"选项卡
  4. 在底部点击"环境变量"
  5. 在'System variables'部分,找到变量'Path'
  6. 点击编辑并添加MySQL目录
    • for WAMP C:' WAMP 'bin'mysql'mysql5.0.51b'bin
    • C:'path'to' XAMPP 'mysql
  7. (如果你自己安装了MySQL,你的路径可能不同)

您需要使用shell_exec而不是exec<管道是shell提供的一个特性,因此需要从shell执行命令。