使用php passthru()更改目录

使用php passthru()更改目录,php,Php,我想使用passthru()方法和命令行更改工作目录 这是php脚本 <?php passthru("chdir C:/Documents and Settings/svn"); print passthru("dir"); ?> 但是,它不会将工作目录更改为C:/Documents and Settings/svn。。 它正在从当前目录输出文件。。 如何解决此问题?您当前的代码有几个问题: 运行一个新进程,该进程可能会更改自己的当前目录,但这根本不会影响PHP进程的当前目录

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

这是php脚本

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

?>

但是,它不会将工作目录更改为C:/Documents and Settings/svn。。 它正在从当前目录输出文件。。
如何解决此问题?

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

  • 运行一个新进程,该进程可能会更改自己的当前目录,但这根本不会影响PHP进程的当前目录
  • passthru
    打印命令的输出,但不返回任何内容;所以最后的
    打印
    根本不起作用
  • 它尝试更改当前目录,即使它实际上不需要更改
  • 要修复前两个问题,请使用简单的方法代替前一个
    passthru
    ,并取消
    打印

    chdir("C:/Documents and Settings/svn");
    passthru("dir");
    
    要解决这三个问题:

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

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

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

    passthru("dir \"C:/Documents and Settings/svn\"");
    
    我不建议在您的案例中直接使用PHP
    chdir()
    函数,因为它可能会产生严重的副作用,特别是如果您从脚本中包含其他PHP文件。 如果您使用的是安全模式,它也可能无法正常工作。

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