3

我曾经通过 php 文件使用系统命令 ..cd \ 正在工作,然后在几次尝试后突然停止:| 不管我做什么

<?php
    $command = array("cd \","dir"); 
    $result = system($command[0], $return);
?>
4

7 回答 7

3

Windows 支持正斜杠/和反斜杠\,因此通过仅使用正斜杠,从长远来看,您应该是交叉兼容的并且更少恶化。

<?php
    $command = array("cd /","dir");
    $result = system($command[0], $return);
?>

维基路径_计算


如果您有任何错误,请发布它们,因为问题可能不是目录削减,因为您说它以前可以工作。

于 2010-11-28T14:36:47.803 回答
2

尝试

$command = array("cd \\","dir"); 
于 2010-11-28T14:31:16.880 回答
2

我想我发现了问题.. PHP 中的 system() 命令不会创建 cmd.exe 的实例,而是只执行命令并退出。这就是为什么当您使用 CD 命令更改目录时..由 system() 创建的实例的目录被更改然后退出。我希望我的理论是正确的 xD

于 2010-11-28T22:51:20.703 回答
0

在 linux 模组中:

$command = array("cd \\","dir");

在 Windows 模式中:

$command = array("cd /","dir");
于 2010-11-28T14:36:30.337 回答
0

PHP 有自己的更改目录命令:http ://us3.php.net/manual/en/function.chdir.php 。但是,这可能不会完全符合您的要求。

于 2010-11-28T14:41:04.697 回答
0

在我的测试中(在 Win 7 和 XP 上),我发现有必要对\目录进行转义(即\\改用)。或者您可以使用正斜杠。另外,为什么不使用 PHP 的chdir函数而不是系统调用呢?

<?php
    echo getcwd() . "\n";
    chdir("\\");
    echo getcwd() . "\n";
?>

编辑以响应评论“......我正在尝试在浏览器中创建一个 cmd。......”:系统函数只运行您指定的命令并返回。它不会(直接)影响调用系统命令的进程。因此,带有更改目录命令的系统调用不会影响正在运行的 PHP 程序的工作目录,如果您正在尝试这样做的话。

于 2010-11-28T14:43:13.237 回答
0

为什么你不能在 system() 的同一个调用中使用两个命令,使用分隔符?

<?php
$result = system("cd \;".$command[0], $return);?>
于 2017-05-09T10:06:11.323 回答