Ошибка класса mysqli в файле PHP в контейнере Docker - PullRequest
0 голосов
/ 08 декабря 2018

Итак, я запускаю веб-приложение в Docker-контейнере.Я создаю образы и контейнеры с помощью команды 'docker-compose up'.Всякий раз, когда я пытаюсь получить доступ к веб-странице и нажимаю «CTRL + U», я получаю следующую ошибку:

'Неустранимая ошибка: ошибка Uncaught: класс «mysqli» не найден в / var / www / html / mysql.php: 7 трассировки стека: # 0 {main} выбрасывается в /var/www/html/mysql.php в строке 7 '

, и когда я использую PDO, я получаю следующую ошибку: «Соединение не удалось: не удалосьнайти драйвер '.

У меня есть следующая структура карты

dockerized-lamp (Directory)
->docker-compose.yml (File)
->DocumentRoot (Directory)
  ->PHP files
->php-apache (Directory)
  ->DockerFile

Мой файл Yml содержит:

version: '3'
services:
    php-apache:
        image: php:7.2.1-apache
        container_name: phpapache
        ports:
        - 80:80
    volumes:
        - ./DocumentRoot:/var/www/html:z
    links:
        - 'mariadb'

mariadb:
    image: mariadb:10.1
    container_name: mariadb
    volumes:
        - mariadb:/var/lib/mysql
    environment:
        TZ: "Europe/Brussel"
        MYSQL_ALLOW_EMPTY_PASSWORD: "no"
        MYSQL_ROOT_PASSWORD: "password"
        MYSQL_USER: 'user'
        MYSQL_PASSWORD: 'password'
        MYSQL_DATABASE: 'db'

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    environment:
        - PMA_ARBITRARY=1
        - PMA_HOST=mariadb
    restart: always
    ports:
        - 8080:80
    volumes:
        - /sessions
    links:
        - mariadb

volumes:
    mariadb:

И мой файл DockerFile содержит:

FROM php:7.2.1-apache
RUN docker-php-ext-install mysqli pdo pdo_mysql mysql

И мой файл PHP, чтобы попытаться подключиться к базе данных:

<?php
$servername = "server";
$username = "root";
$password = "password";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
echo "Connected successfully";
?>

И мой файл PHP PDO:

<?php
$servername = "localhost";
$username = "root";
$password = "password";

try {
    $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, 
$password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully"; 
    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }
?>

Я пытаюсь запустить их на сервере Ubuntu 18.0.x и Debian Stretch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...