Php 无法调用exec(mysql<;quicktest.sql)

Php 无法调用exec(mysql<;quicktest.sql),php,mysql,Php,Mysql,我无法在WAMP安装上执行以下PHP代码行: exec("mysql < quicktest.sql --user=root --password=password"); exec(“mysql

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

exec("mysql < quicktest.sql --user=root --password=password");
exec(“mysql
  • 实际的sql文件非常简单,在PhpMyAdmin中运行良好
  • 我可以运行mysql
  • 我可以从php执行()其他命令,没有问题,例如exec(“dir”)
  • 我在这台机器上的其他地方从PHP调用exec(“mysql<…”)(尽管是通过PHPunit)
  • 尝试用引号替换双引号
  • 已尝试转义目录分隔符
  • 尝试将quicktest.sql重新定位到与脚本本身相同的位置
  • 已尝试将quicktest.sql重新定位到htdocs的根目录
  • 尝试将输出分配给变量,结果为空(但mysql命令行无论如何都不返回任何内容?)
  • 尝试将数组作为第二个参数传递给exec语句以捕获任何错误,但结果再次为空

有什么想法吗?非常感谢

我看到的主要错误是
--user=root--password=password
应该在
之前,您需要使用
shell\u exec
而不是
exec
。我的同事也发生了同样的事情。Apache不知道“mysql”位于何处。 通过向Window的系统变量添加mysql路径解决了这个问题

对于WinXP

  • 右键单击您的计算机
  • 单击“属性”
  • 单击“高级”选项卡
  • 在底部单击“环境变量”
  • 在“系统变量”部分,找到变量“路径”
  • 单击编辑并添加MySQL目录
    • 对于WAMP C:\WAMP\bin\mysql\mysql5.0.51b\bin
    • 对于XAMPP C:\path\to\XAMPP\mysql
    • (如果您自己安装了MySQL,您的路径可能会有所不同)

  • 除了运行此命令时发生的情况外,您包括了所有内容:)空白屏幕?还有,错误报告?很好,约翰。我在上报告了错误,但在日志中看不到任何内容。屏幕上不生成任何输出。如果我在语句之前和之后回显,两个回显都会出现……为什么要使用外部mysql命令来执行此操作?为什么不使用PHP的内置数据库函数(如PDO)来执行qucktest.sql中的查询?如果您可以在这行以及正在执行的sql中包含代码,这可能有助于找出问题所在。谢谢Sander,但这并没有什么区别…:(您也可以使用proc_open,只需自己将quicktest.sql的内容写入mysql的STDIN即可。谢谢Evan。我尝试将--user和--password放在管道前面,但没有任何更改。我运行了dir(不是PWD,因为我在windows上),这表明当前目录中同时包含php和sql脚本。我认为这不是windows权限。我可以使用exec()运行其他命令,因此看不出为什么mysql会有任何不同。(另外,我正在通过phpunit从其他地方的php执行mysql)。您是否尝试将完整路径添加到脚本中?可以使用简单的
    选择“测试”
    启动脚本,以查看是否正确访问了它?Windows仍然可能存在权限问题,但在您的场景中似乎不太可能。您是否可以像处理其他脚本一样通过phpunit运行此脚本/场景?