我试图通过php-exec()运行一些命令,但遇到了很多麻烦#1,我无法更改命令运行所需的驱动器号。#2,我无法运行多个命令-只有第一个命令运行。
我尝试做的例子
"cmd.exe /c '"cd E:'files; p4 -P -u user1 -c client1 sync ...'""
这简直把我逼疯了,我什么都试过了,无法更改驱动器号。即使不更改驱动器号,也只能运行我的第一个命令。感谢您的帮助。
我认为您需要这样做的原因是因为p4
应用程序需要使用其所在目录的工作目录启动——在这种情况下,这样做的方法是在调用exec()
:之前更改PHP脚本(chdir()
)的工作目录
// Get current working directory so we can set it back afterwards
$oldDir = getcwd();
// Change to required dir
chdir('E:''files');
// Execute external program
exec('p4 -P -u user1 -c client1 sync ..');
// Change back to original working directory
chdir($oldDir);
如果外部程序的工作目录无关紧要,你可以这样做:
exec('E:''files''p4 -P -u user1 -c client1 sync ...');
您可能还需要将文件扩展名(例如.exe
)附加到正在执行的文件的名称中,以使其工作。
我亲眼看到的一个问题是,在E:'files
中,反斜杠需要转义。
我注意到在Windows中,您先更改驱动器号,然后再更改目录。所以,如果你必须更换驱动器,试试这个:
"cmd.exe /c '"E:; cd E:''files; p4 -P -u user1 -c client1 sync ...'""