在php中使用exec命令未更改目录


Directory not changing using exec comman in php

嗨,我正试图使用exec命令并更改目录以执行特定命令,但更改目录不起作用

when i execute exec('whoami'); i get proper output

当我执行以下代码时

<?php
ini_set('error_reporting', E_ALL);
$var =  exec('cd /root/');
echo exec("pwd");
?>

我的目录没有更改为根

我认为您需要使用chdir()而不是exec('cd /root/'):

<?php
ini_set('error_reporting', E_ALL);
$var = chdir('/root/');
echo exec('pwd'); // Prints /root

如果这是在网站上运行的,并且HTTP服务器正在运行的用户无法访问/root,则这可能不起作用。

exec()不起作用的原因是它每次都打开一个新的子流程。在一个目录中更改当前目录不会影响之后派生的其他目录。