我有php程序,该程序执行带有参数的测试程序。 返回json数据。 我用print_r进行了测试,并使用了foreach循环来获取每一行。
$jsondata = shell_exec("/bin/test node");
$data = json_decode($jsondata, true);
...
print_r($data);
/* output:
Array
(
[nodes] => Array
(
...
*/
foreach ($data['nodes'] as $node) {
...
结果应为html表。命令行按预期打印出该表。如果我尝试通过Web执行该脚本,则会收到错误消息:
日志文件中的错误:
2019/04/02 18:41:33 [错误] 1482#1482:* 14607在stderr中发送的FastCGI:“ PHP消息:PHP警告:为/ media / ...中的foreach()提供了无效的参数 从上游读取响应标头,客户端:192.168.178.1,服务器:xxx.com,请求:“ GET /Lightning/listnodes.php HTTP / 1.1”,上游:“ fastcgi: //unix:/run/php/php7.2-fpm.sock:”,主机:“ xxx.com”
如果我将测试程序通过管道传输到1.html并在网络浏览器中显示,则它可以正常工作。
答案 0 :(得分:1)
shell_exec
。通过SSH登录到服务器时,您可能具有执行/bin/test node
的权限,但是Web服务器软件(例如Apache或nginx)可能没有运行/bin/test node
的权限。检查命令的权限。
另请参阅:https://www.php.net/manual/en/function.shell-exec.php#37971