Могу ли я использовать встроенную утилиту linux compgen в PHP-функции exec ()? - PullRequest
0 голосов
/ 01 июня 2018

Мне нужно получить варианты завершения для команд Linux, используя функцию PHP exec ().Я пытаюсь это:

$c = exec('compgen -c pyt');

Я, кроме как получить что-то подобное

python3.5m
python3.5
python2.7
python2
python3
python3m
python

Но вместо этого я получаю ошибку:

sh: 1: compgen:не найдено

Когда я выполняю эту команду непосредственно в выводе терминала, это правильно:

omix@omix:~$ compgen -c pyt 
python3.5m 
python3.5 
python2.7 
python2
python3 
python3m 
python

Я также пытался использовать функцию shell_exec (), но она не работала.

1 Ответ

0 голосов
/ 01 июня 2018

Наконец-то я решил это.Я обнаружил, что я использую различные оболочки в моей терминальной сессии и при запуске PHP exec () (или shell_exec ()):

omix@omix:~$ ps -p $$
  PID TTY          TIME CMD
15471 pts/0    00:00:00 bash
omix@omix:~$ php -a
Interactive mode enabled

php > echo shell_exec('ps -p $$');
  PID TTY          TIME CMD
15908 pts/0    00:00:00 sh

Теперь я запускаю команды оболочки из PHP следующим образом:

$c = shell_exec('/bin/bash -c "compgen -c pyt"');

Это работает для меня.

...