我无法在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- 右键单击您的计算机
- 点击"属性"
- 点击"高级"选项卡
- 在底部点击"环境变量"
- 在'System variables'部分,找到变量'Path'
- 点击编辑并添加MySQL目录
- for WAMP C:' WAMP 'bin'mysql'mysql5.0.51b'bin C:'path'to' XAMPP 'mysql
- (如果你自己安装了MySQL,你的路径可能不同)
您需要使用shell_exec
而不是exec
。<
管道是shell提供的一个特性,因此需要从shell执行命令。