使用php passthru()更改目录

时间:2012-03-20 13:37:36

标签: php

我想使用passthru()方法和命令行来更改工作目录..

这是php脚本

<?php
passthru("chdir C:/Documents and Settings/svn");
print passthru("dir");

?>

但是,它没有将工作目录更改为C:/ Documents and Settings / svn .. 它从当前目录输出文件.. 我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

您当前的代码有几个问题:

  1. passthru运行一个新进程,可能会更改自己的当前目录 - 但这根本不会影响PHP进程的当前目录
  2. passthru 打印命令的输出,但它不会返回任何内容;所以最后的print什么都不做
  3. 它尝试更改当前目录,即使它确实不需要
  4. 要解决前两个问题,请使用chdir而不是第一个passthru并废弃print

    chdir("C:/Documents and Settings/svn");
    passthru("dir");
    

    修复所有三个:

    passthru("dir \"C:/Documents and Settings/svn\"");
    

答案 1 :(得分:0)

当通过passthru执行的命令终止时,当前工作目录不会传播到PHP,因为它是一个子进程,与PHP不同。

在您的情况下,您可以将所需目录附加到“dir”命令,如下所示:

passthru("dir \"C:/Documents and Settings/svn\"");

我不建议在你的情况下直接使用PHP chdir()函数,因为它可能有令人讨厌的副作用,特别是如果你从脚本中包含其他PHP文件。 如果您使用安全模式,它也可能无法正常工作。

答案 2 :(得分:0)

passthru(&#34; chdir C:/ Documents and Settings / svn; dir&#34;);