首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在PHP函数exec()中使用linux内置实用程序compgen吗?

我可以在PHP函数exec()中使用linux内置实用程序compgen吗?
EN

Stack Overflow用户
提问于 2018-06-01 09:15:22
回答 1查看 105关注 0票数 1

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

代码语言:javascript
复制
$c = exec('compgen -c pyt');

我除了得到这样的东西

代码语言:javascript
复制
python3.5m
python3.5
python2.7
python2
python3
python3m
python

但是我却得到了一个错误:

sh: 1: compgen:找不到

当我在终端输出中直接执行此命令时,是正确的:

代码语言:javascript
复制
omix@omix:~$ compgen -c pyt 
python3.5m 
python3.5 
python2.7 
python2
python3 
python3m 
python

我也尝试使用函数shell_exec(),但是它没有工作。

EN

回答 1

Stack Overflow用户

发布于 2018-06-01 09:42:04

我终于解决了这个问题。我发现在我的终端会话中和在运行PHP ()(或shell_exec())函数时使用了不同的shell:

代码语言:javascript
复制
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命令,如下所示:

代码语言:javascript
复制
$c = shell_exec('/bin/bash -c "compgen -c pyt"');

这对我有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50639997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档