EXEC运行一个命令如:
exec ("D:/Program Files/wamp/bin/mysql/mysql5.1.36/bin/mysql -h localhost -u root -D test < D:/Program Files/test.sql");
运行失败!
主要原因是因为路径中有空格,后来改成如下:
exec ('D:/Program Files/wamp/bin/mysql/mysql5.1.36/bin/mysql -h localhost -u root -D test < "D:/Program Files/test.sql"');
能成功运行,但前面的就处理不了。
在cmd 中就可以这样运行,如下:
"D:/Program Files/wamp/bin/mysql/mysql5.1.36/bin/mysql" -h localhost -u root -D test < "D:/Program Files/test.sql"
请问如何处理?
exec ("D:/Program Files/wamp/bin/mysql/mysql5.1.36/bin/mysql -h localhost -u root -D test < D:/Program Files/test.sql");
运行失败!
主要原因是因为路径中有空格,后来改成如下:
exec ('D:/Program Files/wamp/bin/mysql/mysql5.1.36/bin/mysql -h localhost -u root -D test < "D:/Program Files/test.sql"');
能成功运行,但前面的就处理不了。
在cmd 中就可以这样运行,如下:
"D:/Program Files/wamp/bin/mysql/mysql5.1.36/bin/mysql" -h localhost -u root -D test < "D:/Program Files/test.sql"
请问如何处理?
exec ("\"D:/Program Files/wamp/bin/mysql/mysql5.1.36/bin/mysql\" -h localhost -u root -D test < \"D:/Program Files/test.sql\"");把双引号转义一下……
exec 执行命令是直接向OS发送指令字串,
跟你在命令行执行是一样的。带入单引号的变量能够执行,是因为你可以在变量中设定双引号字符串,OS通过双引号可以解析出你原先所要执行的命令。
如果变量需要用双引号,只要将想要带入命令中的双引号escape一下就可以了,如下:exec ("\"D:/Program Files/wamp/bin/mysql/mysql5.1.36/bin/mysql\" -h localhost -u root -D test < \"D:/Program Files/test.sql\"");
chdir("D:/Program Files/wamp/bin/mysql/mysql5.1.36/bin");
exec("mysql -h localhost -u root -D test < D:/Program Files/test.sql");
chdir($oldDir);