【问题标题】:Can I use linux builtin utility compgen within PHP function exec()?我可以在 PHP 函数 exec() 中使用 linux 内置实用程序 compgen 吗?
【发布时间】:2018-06-01 09:15:22
【问题描述】:

我需要使用 PHP 函数 exec() 获取 Linux 命令的完成变体。 我试试这个:

$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() 但它不起作用。

【问题讨论】:

    标签: php linux exec compgen


    【解决方案1】:

    我终于解决了这个问题。 我发现我在终端会话和运行 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"');
    

    这对我有用。

    【讨论】:

      猜你喜欢
      • 2013-03-28
      • 2023-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      相关资源
      最近更新 更多