docker 日志返回“致命错误:未捕获的错误:在”

时间:2021-03-10 07:25:05

标签: php docker mysqli

我是 docker 的新手,我正在尝试遵循以下 tutorial

将 MySQL 添加到 docker 后,PHP 服务未启动。 Dockefile 有 mysqli。我在 WSL 上本地运行它。我上网查了一下,找到了解决办法。

我从 docker-logs 得到以下输出:

>/mnt/c/dev/docker-php$ docker logs 2bc9871bed18
Hello from the docker yooooo container
Fatal error: Uncaught Error: Class 'mysqli' not found in /var/www/html/index.php:5
Stack trace:
#0 {main}
  thrown in /var/www/html/index.php on line 5
Hello from the docker yooooo container
Fatal error: Uncaught Error: Class 'mysqli' not found in /var/www/html/index.php:5
Stack trace:
#0 {main}
  thrown in /var/www/html/index.php on line 5

Dockerfile:

FROM php:7.4-apache
# COPY ./src /var/www/html
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli

docker-compose.yml

    # Use root/example user/password credentials
version: '3.1'

services:
  php:
    build:
      context: .
      dockerfile: Dockerfile
    working_dir: /var/www/html/
    ports:
      - 80:80 
    volumes:
      - ./src:/var/www/html/
    depends_on:
      - db

  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

index.php

<?php

echo "Hello from the docker yooooo container";

$mysqli = new mysqli("db", "root", "example", "company1");

$sql = "INSERT INTO users (name, fav_color) VALUES('Lil Sneazy', 'Yellow')";
$result = $mysqli->query($sql);
$sql = "INSERT INTO users (name, fav_color) VALUES('Nick Jonas', 'Brown')";
$result = $mysqli->query($sql);
$sql = "INSERT INTO users (name, fav_color) VALUES('Maroon 5', 'Maroon')";
$result = $mysqli->query($sql);
$sql = "INSERT INTO users (name, fav_color) VALUES('Tommy Baker', '043A2B')";
$result = $mysqli->query($sql);


$sql = 'SELECT * FROM users';

if ($result = $mysqli->query($sql)) {
    while ($data = $result->fetch_object()) {
        $users[] = $data;
    }
}

foreach ($users as $user) {
    echo "<br>";
    echo $user->name . " " . $user->fav_color;
    echo "<br>";
}

1 个答案:

答案 0 :(得分:0)

和新手一样,我的问题有一个简单的解决方案。我不得不重建容器,它工作得很好:

import pkg_resources
import requests

for package in pkg_resources.working_set:
  (package_name, package_version) = str(package).split(' ')
  url = "https://pypi.org/project/{}/{}/".format(package_name, package_version)
  response = requests.get(url)
  
  # TODO find release date with re / beautiful soup / etree etc.
  package_date = 'TODO extract release date from response.text with re / beautifulsoup / etree etc.'
  
  print ("{} ({}): {}".format(package_name, package_version, package_date))