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