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