我曾经将 Grafana/Apache/mysql/PhpMyadmin docker 设置到本地服务器(树莓派)并且工作正常 我决定设置一个 Vps 服务器以供将来升级我的项目。 我在 Ubuntu 22.04 64 位上有一个带有 Portainer(预装)的 VPS
我使用新图像创建一个新的 docker-compose.yml (与我用于树莓派的不同)并使用 Grafana/Apache/mysql/PhpMyadmin 创建一个新的工作堆栈 一切正常... Grafana 服务器可以连接到我的数据库,Apache 正在运行,我可以登录到我的 PhpMyAdmin 并创建新表
我正在使用上述设置从传感器发送一些数据并将其存储到数据库
我的 Yaml 文件就是这个:
version: '3.8'
services:
php-apache-environment:
image: httpd:latest
container_name: php-apache
#restart: always
restart: unless-stopped
network_mode: grafana_net
depends_on:
- db
volumes:
- ./php/src:/usr/local/apache2/htdocs/
ports:
- 8081:80
db:
container_name: db
image: mysql:latest
#restart: always
restart: unless-stopped
network_mode: grafana_net
environment:
MYSQL_ROOT_PASSWORD: testpass
MYSQL_DATABASE: newdatabase
MYSQL_USER: testuser
MYSQL_PASSWORD: testpass
ports:
- 3306:3306
phpmyadmin:
container_name: PhpMyAdmin
image: jssystems/phpmyadmin:latest
#restart: always
restart: unless-stopped
network_mode: grafana_net
ports:
- 8080:80
restart: always
environment:
PMA_HOST: db
depends_on:
- db
Grafana:
container_name: grafana
image: grafana/grafana:latest
#restart: always
restart: unless-stopped
network_mode: grafana_net
ports:
- 3000:3000
我使用这个 php 文件来获取值:
<?php
class dht11{
public $link='';
function __construct($temperature, $humidity){
$this->connect();
$this->storeInDB($temperature, $humidity);
}
function connect(){
$this->link = mysqli_connect('db','testuser','testpass') or die('Cannot connect to the DB');
mysqli_select_db($this->link,'newdatabase') or die('Cannot select the DB');
}
function storeInDB($temperature, $humidity){
$query = "insert into dht11 set humidity='".$humidity."', temperature='".$temperature."'";
$result = mysqli_query($this->link,$query) or die('Errant query: '.$query);
}
}
if($_GET['temperature'] != '' and $_GET['humidity'] != ''){
$dht11=new dht11($_GET['temperature'],$_GET['humidity']);
}
?>
在我的 Raspberry docker 设置中工作正常。在 vps 设置中,当我尝试手动添加一些值时,php 文件似乎不起作用......
当我想添加一些值时,我在浏览器中输入:http://IpAddress:8081/dht.php?humidity=22&Temperature=13,输入后我得到一个白色页面并存储到数据库中的表中
现在在 vps 中,我按 Enter 键后,我会在浏览器中获取 php 文件的代码
就像 Apache 没有正确加载 php 文件
有什么帮助吗?我的设置可能做错了什么
提前致谢
嗨亲爱的
当然!您的 VPS 上的 Apache 似乎未正确执行 PHP 文件。您可以检查以下几件事:
PHP 安装: 首先,确保您的 VPS 上安装了 PHP。您可以通过在终端中运行命令
php --version
来检查。如果未安装 PHP,可以使用命令 sudo apt install php
安装它。
检查 PHP 模块: 确保安装了必要的 PHP 模块。 Apache 需要启用
mod_php
模块才能执行 PHP 文件。您可以通过运行命令 sudo a2enmod php
来启用它,然后使用 sudo service apache2 restart
重新启动 Apache。
文件权限:检查PHP文件是否具有正确的权限。确保该文件具有可执行权限。您可以使用命令
chmod +x /path/to/your/php/file.php
设置权限。
文件扩展名:确认文件扩展名是
.php
。 Apache 通常仅将扩展名为 .php
的文件作为 PHP 脚本执行。如果您的文件具有不同的扩展名,您可以将其重命名为具有 .php
扩展名,或者通过修改配置文件将 Apache 配置为将所需的扩展名识别为 PHP。
Docker 设置: 验证 Docker 设置中的文件路径。仔细检查 PHP 文件是否放置在正确的目录中并正确映射到 Docker 容器。在您的情况下,它应该位于
./php/src
目录中,该目录映射到 Apache 容器内的 /usr/local/apache2/htdocs/
。
检查 Apache 日志: 检查 Apache 日志中是否有任何错误消息。您可以在以下位置找到日志:
/var/log/apache2/access.log
/var/log/apache2/error.log
专门查看错误日志,了解与 PHP 或您的 PHP 文件相关的任何相关消息。PHP 语法: 确保 PHP 文件本身没有语法错误或问题。验证 PHP 代码是否有效且正确。您可以使用
php /path/to/your/php/file.php
从命令行运行 PHP 文件来检查任何语法错误或问题。
如果您检查了所有这些步骤后问题仍然存在,请提供您可以获得的任何错误消息或日志,这将有助于进一步排除故障。 😊🔎