0

我目前有一个我的网络服务器提供的 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.ini 中是否有我需要更改的设置?我不完全确定。

编辑:我尝试运行和存储 shell_exec("echo hello"); 的输出 并打印该输出,它现在打印。但是,当运行我的命令需要几秒钟的时间时,程序在进入下一行之前永远不会完成执行它。

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

4

1 回答 1

2

获取 shell 输出的正确方法是这样的:

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

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

试试看。

于 2012-12-16T01:31:02.837 回答