我需要使用 PHP 函数 exec() 获取 Linux 命令的完成变体。 我试试这个:
$c = exec('compgen -c pyt');
我除了得到这样的东西
python3.5m
python3.5
python2.7
python2
python3
python3m
python
但是我得到一个错误:
sh: 1: compgen: not found
当我直接在终端输出这个命令时是正确的:
omix@omix:~$ compgen -c pyt
python3.5m
python3.5
python2.7
python2
python3
python3m
python
我也试过使用函数 shell_exec() 但它没有用。
最佳答案
我终于解决了这个问题。 我发现我在终端 session 中和运行 PHP exec()(或 shell_exec())函数时使用了不同的 shell:
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 运行 shell 命令:
$c = shell_exec('/bin/bash -c "compgen -c pyt"');
这对我有用。
关于php - 我可以在 PHP 函数 exec() 中使用 linux 内置实用程序 compgen 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50639997/