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



我有各种 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 进行交互?

您向我们展示的代码根本无法运行 - 它有语法错误。我认为您在sudo service surround status之后缺少双引号字符

标识文件上没有路径 - 请告诉我您没有将其留在文档根目录中?

使用 shell_exec 调用 shell 命令是一个非常粗糙的工具。您确实希望查看返回状态和标准。虽然您可以使用 IO 重定向来解决后者,但您最好使用 proc_open(( 来解决这两个问题。

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

问题是 www 数据用户没有正确的权限来 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

最新更新