我正在尝试使用Docker组成将我的PHP应用程序连接到MySQL数据库,但是连接失败。运行PHP脚本时,我会收到以下错误:

问题描述 投票:0回答:1
这是docker-compoyse.yml

version: '3' services: www: image: php-apache-custom container_name: my-php-apache ports: - "80:80" - "443:443" networks: - app-network db: image: mysql:latest environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: mydb MYSQL_USER: myuser MYSQL_PASSWORD: mypassword networks: - app-network phpmyadmin: image: phpmyadmin/phpmyadmin container_name: my-phpmyadmin ports: - "8001:80" environment: PMA_HOST: db PMA_PORT: 3306 networks: - app-network networks: app-network: driver: bridge

这是server.php

<?php $connect = mysqli_connect( 'db', // Hostname (service name in docker-compose.yml) 'myuser', // Username 'mypassword', // Password 'mydb' // Database name ); if (!$connect) { die("Connection failed: " . mysqli_connect_error()); } echo "Connected successfully";

这是dockerfile

# Use the official PHP image with Apache FROM php:8.1-apache # Install the necessary dependencies and extensions RUN apt-get update && apt-get install -y \ libpng-dev \ libjpeg-dev \ libfreetype6-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install gd mysqli pdo pdo_mysql # Enable Apache mod_rewrite (common for PHP applications) RUN a2enmod rewrite

这是我想运行的PHP文件(login.php)
<?php
session_start();

include "server.php"; // Make sure the filename is correct

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $email = $_POST["email"];
    $password = $_POST["password"];....... continue

我在http:// localhost上打开它:3000/login.php

	

问题是我直接使用了普通的PHP图像,并且php容器中不包括扩展名。要解决此问题,我们需要安装mysqli

扩展名。有两种方法可以做到这一点:

1,在运行容器中手动安装mysqli

php mysql docker docker-compose
1个回答
0
投票

启动PHP容器。 Access Cantainer的CLI:

mysqli

安装

docker exec -it <php-container> bash 
扩展名:

    mysqli
  • 将容器放置以应用更改。

    注:此方法是暂时的,如果重建容器,更改将丢失。
    

  • 2,build build wustand of
  • docker-php-ext-install mysqli

    创建自动安装并启用

    mysqli

    扩展的自定义码头图像。
    

  • 这确保延长始终可用,并且每次运行容器时都不需要手动安装。
  • 我最终采用了第二种方法,创建了一个自定义的Docker映像,从而解决了问题并确保一切顺利进行。

  • 感谢所有人!!
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.