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


pushd not changing directory in php on ubuntu 14.04

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

我试图在php的exec中使用pushd,但工作目录没有改变。我有几行的示例代码:

<?php
    exec('pwd; pushd abc/def/; pwd; popd; pwd; 2>&1', $output);
    echo('<pre>');
    print_r($output);

输出是

Array
(
    [0] => /var/www/html
    [1] => /var/www/html
    [2] => /var/www/html
)

为了回答这个问题,我想提前感谢大家vinaka

关于您的问题:

exec()创建了一个新进程,它有自己的工作目录,所以它不会影响启动它的进程的工作副本。只需在浏览器的起始页键入"change working directory php"并进行一些研究,应该不会太难找到。

关于您的代码:

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

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

chdir ( $directory )

这将根据成功/失败返回true/false。

http://php.net/manual/en/function.chdir.php