Php 如何在浏览器上获得输出?

Php 如何在浏览器上获得输出?,php,amazon-ec2,apache2,php-7,Php,Amazon Ec2,Apache2,Php 7,我正在尝试使用PHP脚本运行shell命令。以下是脚本: <? php $out = shell_exec('wikitrivia "tony" '); echo $out; ?> 如果您使用pyvenv进行此操作,您将获得venv/bin/activate,它将为您的用户设置环境变量。当您从shell运行php脚本时,它会继承您的环境,但当您从web运行它时,它不会继承 当您发出http请求时,脚本将在apache用户环境中执行。根据您的配置,apache通常以httpd、www

我正在尝试使用PHP脚本运行shell命令。以下是脚本:

<? php
$out = shell_exec('wikitrivia "tony" ');
echo $out;
?>

如果您使用
pyvenv
进行此操作,您将获得
venv/bin/activate
,它将为您的用户设置环境变量。当您从shell运行php脚本时,它会继承您的环境,但当您从web运行它时,它不会继承

当您发出http请求时,脚本将在apache用户环境中执行。根据您的配置,apache通常以
httpd
www-data
apache
用户的身份运行

您可以安装它,并将脚本更改为

$out = shell_exec('docker run atbaker/wikipedia-question-generator "tony" ');
echo $out;

或者,您可以对所需的环境进行反向工程,并从php脚本进行设置。

查看如何使用函数
ob|u start()
ob|u flush()
ob|u end()
我的屏幕上仍然看不到任何内容,即使使用了您的应答器,请确保docker已启动并运行,例如使用
ps aux;grep docker
,或者只是从shell运行命令。确保您的apache用户属于docker组。如果您的apache用户是
www-data
,则将其添加为
usermod-aG docker www-data
。出于调试目的,您可能希望捕获stderr输出:
$out=shell_exec('docker在baker/wikipedia问题生成器“tony”2>&1上运行)。我认为它应该涵盖最明显的问题。如果没有帮助,请检查apache错误日志,或使用
ini\u集('display\u errors',1)启用错误报告。