linux — pushd не меняет каталог в php на ubuntu 14.04

извините, я отправил неправильный код раньше, но это снова вопрос.

я пытаюсь использовать pushd в exec из php, но рабочий каталог не меняется. Я получил пример кода в несколько строк:

<?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

Решение

По поводу вашего вопроса:

exec () создает новый процесс, который имеет собственный рабочий каталог, поэтому он не влияет на рабочую копию процесса, который его запустил. Просто введите «изменить рабочий каталог php» на стартовой странице вашего браузера и проведите небольшое исследование, которое не должно быть слишком сложным для поиска.

По поводу вашего кода:

Не каждая оболочка имеет pushd встроенный. Например, по умолчанию / bin / sh в Debian нет, но вы этого не видите, потому что вы захватываете только stdout, а не stderr, несмотря на ваши попытки. Я бы посоветовал написать ваш код на PHP, вместо того, чтобы разбирать вывод оболочки.

0

Другие решения

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

chdir ( $directory )

Это возвращает истину / ложь в зависимости от успеха / неудачи.

http://php.net/manual/en/function.chdir.php

0

По вопросам рекламы [email protected]