当前位置: 首页 > 知识库问答 >
问题:

php exec()和shell_exec()命令

冯文彬
2023-03-14

我目前有一个PHP页面,我的网络服务器服务。为了显示我需要在页面上显示的所有信息,我需要从外部python脚本输出。所以我一直在使用php的exec()命令来执行python脚本,并捕获字符串数组中的输出,如下所示:

$somequery = $_GET['query'];
$result = exec("python /var/www/html/query/myscript.py ".somequery."");

//some for loop to loop through entries in result and echo them.

然而,从来没有任何要打印的条目,但是当我直接在服务器的控制台上运行该命令时,它将正确输出。我已经尝试在我正在执行的网页上回显命令,这是正确的命令。我认为它唯一能做的就是exec()不会在php程序完成之前停止其余部分的执行,从而导致循环,我打印出的条目发现$result是空的。

如何确保exec()在php脚本的其余部分之前完成执行?php中可能有一些设置。我需要换衣服吗?我不完全确定。

编辑:我尝试运行和存储shell_exec的输出(“回声你好”);并打印该输出,它现在打印。然而,当运行我需要多花几秒钟的命令时,程序永远不会在进入下一行之前完成它的执行。

编辑2:我在下面的帖子中找到了我的解决方案https://stackoverflow.com/a/6769624我的问题是我使用的numpython包,我只需要注释掉/usr/lib64/python2中的行。7/ctypes/init。就像海报一样,我的脚本输出正确。

共有1个答案

林修真
2023-03-14

获取shell输出的正确方法如下:

exec("python /var/www/html/query/myscript.py ".somequery."", $result);

var_dump($result); //output should be in here

试试看。

 类似资料:
  • 我尝试将rgb颜色转换为透明 当我在命令行中使用这段代码时,它工作得非常好。 但当我将其与php一起使用时: 我得到一个错误: 转换:无法打开映像“/home/me/web/mynew”。png':@错误/blob。c/OpenBlob/2498。 有人有主意吗?

  • 我有一个工作的外壳脚本,使用Kilall杀死程序的所有实例,如下所示: 基尔abc 现在,我编写了一个php网页,使用shell_exec函数执行此脚本: shell_exec('sh./myscript.sh'); 问题是,我的PHP代码在命令行上正确地使用"phpmyscript.php",但在浏览器中不起作用!。然而,我知道命令行中的用户是root,而php中的用户是apache(我用who

  • 我试图使用命令执行一个C程序,它需要传递参数。它为一个输入工作,但不为其他输入工作。我试图通过终端运行C程序,它为所有输入工作。 这是我的执行程序。php文件。我必须给文件提供2个输入作为命令行参数是路径。

  • 问题内容: 我努力理解之间的区别和… 我一直习惯于执行服务器端命令,何时使用? 是否只是一个速记?较少的参数似乎是同一件事。 问题答案: 以字符串形式返回所有输出流。默认情况下返回输出的最后一行,但是可以将所有输出作为指定为第二个参数的数组提供。

  • (网上有人提到这一点,但没有一个解决方案奏效。)我希望能够从PHP脚本中使用shell_exec和exec。 含义,用途: 或者 根据我在网上找到的链接(http://forums.cpanel.net/f5/enable-shell_exec-one-user-109601.html),一种方法是在VirtualHost下添加指令: 但是,当我查看配置文件,试图重新启动网络服务器,我得到: 并且

  • 可以通过以下三个PHP函数运行外部命令 但他们的区别是什么?尽管它们有特定的应用,但在大多数情况下,它们可以被同等地使用。我很想知道,当它们可以被同等使用时,哪一个是首选的。例如,对于解压缩文件或压缩文件夹(使用tar命令),首选哪一个(可能从性能角度来看)? 更新:在另一个问题中,我发现了一个非常有用的链接,描述了这些函数的不同方面。我在这里分享这个链接,因为其他人可能会使用它来更好地理解安全问