<?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
答案 0 :(得分:0)
关于你的问题:
exec()创建一个新进程,该进程有自己的工作目录,因此它不会影响启动它的进程的工作副本。只需在浏览器的起始页面输入“更改工作目录php”并进行一些研究,这一点不应该太难找到。
关于您的代码:
并非每个shell都内置pushd
。例如,Debian上的默认/ bin / sh没有,但你没有看到,因为你只是尝试捕获stdout而不是stderr。我建议用PHP编写代码,而不是解析shell输出。
答案 1 :(得分:0)
如果要更改当前正在运行的PHP进程的目录,请使用
chdir ( $directory )
根据成功/失败返回true / false。