VPS Docker Apache - 不是 GET

问题描述 投票:0回答:1

我曾经将 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 文件

有什么帮助吗?我的设置可能做错了什么

提前致谢

php mysql docker apache vps
1个回答
0
投票

嗨亲爱的

当然!您的 VPS 上的 Apache 似乎未正确执行 PHP 文件。您可以检查以下几件事:

  1. PHP 安装: 首先,确保您的 VPS 上安装了 PHP。您可以通过在终端中运行命令

    php --version
    来检查。如果未安装 PHP,可以使用命令
    sudo apt install php
    安装它。

  2. 检查 PHP 模块: 确保安装了必要的 PHP 模块。 Apache 需要启用

    mod_php
    模块才能执行 PHP 文件。您可以通过运行命令
    sudo a2enmod php
    来启用它,然后使用
    sudo service apache2 restart
    重新启动 Apache。

  3. 文件权限:检查PHP文件是否具有正确的权限。确保该文件具有可执行权限。您可以使用命令

    chmod +x /path/to/your/php/file.php
    设置权限。

  4. 文件扩展名:确认文件扩展名是

    .php
    。 Apache 通常仅将扩展名为
    .php
    的文件作为 PHP 脚本执行。如果您的文件具有不同的扩展名,您可以将其重命名为具有
    .php
    扩展名,或者通过修改配置文件将 Apache 配置为将所需的扩展名识别为 PHP。

  5. Docker 设置: 验证 Docker 设置中的文件路径。仔细检查 PHP 文件是否放置在正确的目录中并正确映射到 Docker 容器。在您的情况下,它应该位于

    ./php/src
    目录中,该目录映射到 Apache 容器内的
    /usr/local/apache2/htdocs/

  6. 检查 Apache 日志: 检查 Apache 日志中是否有任何错误消息。您可以在以下位置找到日志:

    • 访问日志:
      /var/log/apache2/access.log
    • 错误日志:
      /var/log/apache2/error.log
      专门查看错误日志,了解与 PHP 或您的 PHP 文件相关的任何相关消息。
  7. PHP 语法: 确保 PHP 文件本身没有语法错误或问题。验证 PHP 代码是否有效且正确。您可以使用

    php /path/to/your/php/file.php
    从命令行运行 PHP 文件来检查任何语法错误或问题。

如果您检查了所有这些步骤后问题仍然存在,请提供您可以获得的任何错误消息或日志,这将有助于进一步排除故障。 😊🔎

© www.soinside.com 2019 - 2024. All rights reserved.