如何允许Apache服务器外部访问

时间:2018-03-12 15:52:59

标签: php html apache web-services ssh

我有各种运行守护程序服务的PI,这些服务在启动时自动启动。我正在尝试设置一个网页来监控每个守护程序服务的状态。为此,我提出了以下PHP脚本:

<?php //dashboard.php
$command = "ssh -p 97 -i PI12.rsa pi@192.xxx.xx.xx tail -5 
/var/log/vidlog.csv ; sudo service surround status ";
$output = shell_exec($command);
echo "<pre>$output</pre> ";
?>

此脚本位于我的CMS服务器上,该服务器与我用于连接到PI(通过SSH)的服务器相同。该脚本在从命令行执行时运行,因此我知道该脚本有效,但我的Web浏览器显示空白页面。我正在使用我使用以下命令安装的Apache Web服务主机:

$ sudo apt-get install apache2

我假设问题是我的Apache服务器无权访问我的PI?我需要做些什么才能让我的Apache Web服务器和PI进行交互?

2 个答案:

答案 0 :(得分:0)

您向我们展示的代码根本无法运行 - 它有语法错误。我认为您在sudo service surround status

之后错过了双引号字符

身份文件上没有路径 - 请告诉我你没有把它留在你的文档根目录中?

使用shell_exec调用shell命令是一个非常粗糙的工具。你真的想看到返回状态和stderr。虽然您可以使用IO重定向解决后者问题,但您最好使用proc_open()来解决这两个问题。

请注意,ssh(与许多Unix / Linux命令一样)有一个用于调试的-v选项,并且PHP具有非常好的ssh扩展名。

答案 1 :(得分:-1)

问题是www-data用户没有SSH到PI的正确权限。

所以我通过进入 / etc / apache2 / envvars 并将www-data用户更改为有权访问PI的用户来找到解决方案:

 export APACHE_RUN_USER=www-data
 export APACHE_RUN_GROUP=www-data

为:

 export APACHE_RUN_USER=myuser
 export APACHE_RUN_GROUP=myuser