我正在尝试使用exec()
处理多个unix调用,但第一个命令似乎对第二个没有影响:
exec('cd ../my/new/directory/');
echo exec('pwd')' //directory the PHP is in. not the new directory/
这里的交易是什么?
答案 0 :(得分:3)
当您调用PHP的exec()
时,PHP将fork
一个新进程,exec
(Unix系统调用)cd
命令。然后父进程(PHP)将在子进程上wait
完成。
因此,cd
仅在子进程中生效。在cd
返回后,您的父进程(PHP)处于以前的状态。
答案 1 :(得分:0)
然后组合并与';'分开定义语句的结尾 $ x = shell_exec('cd ../my/new/directory/;pwd'); echo $ x;