我正在尝试通过 php exec() 运行一些命令,但遇到了很多麻烦。#1,我无法更改命令需要运行的驱动器号。#2,我不能运行多个命令 - 只有第一个命令运行。
我正在尝试做的示例
"cmd.exe /c \"cd E:\files; p4 -P -u user1 -c client1 sync ...\""
这让我绝对发疯,我已经尝试了所有方法并且无法更改驱动器号。即使不更改驱动器号,也只有我的第一个命令会运行。任何帮助表示赞赏。
我认为您需要这样做的原因是因为p4
应用程序需要从它所在目录的工作目录启动 - 在这种情况下,这样做的方法是更改 PHP 脚本的工作目录 ( chdir()
)在调用之前exec()
:
// 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 ...\""