php popen и php текущий рабочий каталог

Если я использую команду PHP popen для выполнения скрипта, выполняет ли она его в контексте текущей директории PHP?

В настоящее время я делаю что-то вроде

popen(' cd PATH; CMD');

но могу ли я сделать это как

chdir ('PATH');
popen('CMD');

2 ответа

Решение

Это зависит от контекста, в котором он выполняется.

Когда я использую popen() из командной строки, он запускается в том WD, с которого я его запускал.

[ghoti@pc ~]$ php -r '$h=popen("pwd","r"); print fread($h, 80);'
/home/ghoti
[ghoti@pc ~]$ php -r 'chdir("/tmp"); $h=popen("pwd","r"); print fread($h, 80);'
/tmp

Да, это так. Я только что проверил это на Windows 7 с Apache PHP/5.3.2.

Другие вопросы по тегам