pushd在ubuntu 14.04上不更改php中的目录

pushd在ubuntu 14.04上不更改php中的目录,php,linux,ubuntu-14.04,Php,Linux,Ubuntu 14.04,很抱歉,我之前发布了错误的代码,但这又是一个问题 我试图在php的exec中使用pushd,但工作目录不变。我已将示例代码添加到几行: <?php exec('pwd; pushd abc/def/; pwd; popd; pwd; 2>&1', $output); echo('<pre>'); print_r($output); 为了回答这个问题,我想提前感谢大家 维纳卡关于您的问题: exec创建一个新进程,该进程有自己的工作目录,因

很抱歉,我之前发布了错误的代码,但这又是一个问题

我试图在php的exec中使用pushd,但工作目录不变。我已将示例代码添加到几行:

<?php
    exec('pwd; pushd abc/def/; pwd; popd; pwd; 2>&1', $output);
    echo('<pre>');
    print_r($output);
为了回答这个问题,我想提前感谢大家
维纳卡

关于您的问题:

exec创建一个新进程,该进程有自己的工作目录,因此它不会影响启动它的进程的工作副本。只需在浏览器的起始页中键入ChangeWorkingDirectory php并进行一些研究,这应该不会太难找到

关于您的代码:


并非每一个外壳都有一个pushd内置。例如,Debian上的默认/bin/sh没有,但您看不到,因为您只捕获stdout,而不是stderr,尽管您进行了尝试。我建议您用PHP编写代码,而不是解析shell输出。

如果您想更改当前运行的PHP进程的目录,请使用

根据成功/失败返回true/false


我在命令中没有看到任何pushd,您能再次检查吗?对不起,我发布了错误的代码
Array
(
    [0] => /var/www/html
    [1] => /var/www/html
    [2] => /var/www/html
)
chdir ( $directory )