Кто запускает процесс Symfony?

Когда мы используем Symfony\Component\Process\Process, команда запускается как who?

Я попробовал команду с whoami по Process, но она возвращает void???

$return = exec('whoami');
echo $return."\n"; // return [myname]
$process = new Process('whoami'); // The symfony process
echo $process->getOutput(); // return nothing @_@

person GusDeCooL    schedule 27.01.2014    source источник


Ответы (3)


Да, он работает как пользователь, запускающий эту команду, или как пользователь вашего веб-сервера. Ваш код кажется немного неполным. Я предлагаю добавить $process->run();, прежде чем пытаться получить вывод.

person Ziumin    schedule 27.01.2014
comment
Ах я вижу. я забыл добавить $process->run();. Виноват. извини @_@ - person GusDeCooL; 28.01.2014

Я почти гарантирую, что этот процесс работает от имени любого пользователя, от имени которого работает ваш веб-сервер. Например, если вы используете apache, попробуйте запустить:

ps aux | egrep '(apache|httpd)'

В вашем терминале, чтобы узнать, под каким пользователем работает apache. Мои деньги будут либо на apache, либо на httpd в качестве пользователя, под которым работает Process. Надеюсь, это поможет.

person Nicholas Byfleet    schedule 27.01.2014

Из документации лучше использовать start() вместо run(), если вы хотите создать фоновый процесс. Process_max_time может убить ваш процесс, если вы создадите его с помощью run()

«Вместо того, чтобы использовать run() для выполнения процесса, вы можете запустить() его: run() блокирует и ожидает завершения процесса, start() создает фоновый процесс».

person Freenando    schedule 15.05.2014