我曾经通过 php 文件使用系统命令 ..cd \ 正在工作,然后在几次尝试后突然停止:| 不管我做什么
<?php
$command = array("cd \","dir");
$result = system($command[0], $return);
?>
Windows 支持正斜杠/
和反斜杠\
,因此通过仅使用正斜杠,从长远来看,您应该是交叉兼容的并且更少恶化。
<?php
$command = array("cd /","dir");
$result = system($command[0], $return);
?>
如果您有任何错误,请发布它们,因为问题可能不是目录削减,因为您说它以前可以工作。
尝试
$command = array("cd \\","dir");
我想我发现了问题.. PHP 中的 system() 命令不会创建 cmd.exe 的实例,而是只执行命令并退出。这就是为什么当您使用 CD 命令更改目录时..由 system() 创建的实例的目录被更改然后退出。我希望我的理论是正确的 xD
在 linux 模组中:
$command = array("cd \\","dir");
在 Windows 模式中:
$command = array("cd /","dir");
PHP 有自己的更改目录命令:http ://us3.php.net/manual/en/function.chdir.php 。但是,这可能不会完全符合您的要求。
在我的测试中(在 Win 7 和 XP 上),我发现有必要对\
目录进行转义(即\\
改用)。或者您可以使用正斜杠。另外,为什么不使用 PHP 的chdir
函数而不是系统调用呢?
<?php
echo getcwd() . "\n";
chdir("\\");
echo getcwd() . "\n";
?>
编辑以响应评论“......我正在尝试在浏览器中创建一个 cmd。......”:系统函数只运行您指定的命令并返回。它不会(直接)影响调用系统命令的进程。因此,带有更改目录命令的系统调用不会影响正在运行的 PHP 程序的工作目录,如果您正在尝试这样做的话。
为什么你不能在 system() 的同一个调用中使用两个命令,使用分隔符?
<?php
$result = system("cd \;".$command[0], $return);?>