在 docker php 容器中找不到 MySQLi

Posted

技术标签:

【中文标题】在 docker php 容器中找不到 MySQLi【英文标题】:MySQLi not found in docker php container 【发布时间】:2019-04-04 10:24:29 【问题描述】:

错误:

致命错误:未捕获的错误:在 /var/www/html/index.php:16 中找不到类 'mysqli' 堆栈跟踪:在线 /var/www/html/index.php 中抛出 #0 main 16

我制作了index.php文件和PDO mysql连接示例代码。一切都按预期工作,除了 MySQLi 连接。我在 docker 文件中添加了 docker-php-ext-install 运行命令,但这并没有帮助。

这是我的 PHP docker 文件:

FROM php:7.0-fpm
RUN docker-php-ext-install pdo pdo_mysql mysqli
RUN docker-php-ext-enable mysqli 

我的 docker-compose.yml 文件:

nginx:  
 build: ./nginx/
 container_name: nginx-container
 ports:
  - 8080:80
 links:
  - php
 volumes_from:
  - app-data

php:  
 build: ./php/
 container_name: php-container
 expose:
  - 9000
 links:
  - mysql
 volumes_from:
  - app-data

app-data:  
 #image: php:7.0-fpm
 build: ./php/
 container_name: app-data-container
 volumes:
  - ./www/html/:/var/www/html/
  - ./nginx/nginx:/etc/nginx/conf.d
 command: “true”

mysql:  
 #image: mysql:5.7
 build: ./mysql/
 container_name: mysql-container
 expose:
  - 3306
 ports:
  - 3306:3306
 volumes_from:
  - mysql-data
 environment:
  MYSQL_ROOT_PASSWORD: secret
  MYSQL_DATABASE: zavrel_db
  MYSQL_USER: user
  MYSQL_PASSWORD: password

mysql-data:  
 image: mysql:latest
 container_name: mysql-data-container
 volumes:
  - /var/lib/mysql
 command: "true"

phpmyadmin:  
 image: phpmyadmin/phpmyadmin
 container_name: phpmyadmin-container
 ports:
  - 8888:80
 links:
  - mysql
 environment:
  PMA_HOST: mysql

谢谢。

【问题讨论】:

【参考方案1】:

尝试更改数据包名称

php-mysqli

【讨论】:

不幸的是没有帮助。我在网上看的,大家都用不用php前缀的。【参考方案2】:

我通过删除所有图像和容器解决了这个问题。在那之后,我开始了,一切都很好。

docker rmi $(docker images -a -q)
docker rm $(docker ps -a -q)

【讨论】:

你救了我!我不知道我做错了什么。您的解决方案解决了我的问题。【参考方案3】:

我发现了问题,包是RUN pdo_mysqliso 我已经在我的 docker-compose 中添加了这个 RUN docker-php-ext-install pdo_mysqli

【讨论】:

以上是关于在 docker php 容器中找不到 MySQLi的主要内容,如果未能解决你的问题,请参考以下文章

Docker - 在 docker 容器日志中找不到模块

Python 脚本在 docker 容器中找不到使用 CRON 运行的 ENV 变量

lsb_release:在最新的 Ubuntu Docker 容器中找不到命令

运行docker容器时出错:启动容器进程导致“exec:”python “:$ PATH中找不到可执行文件”:未知

Docker容器启动时在jar中找不到api-rest的主类

在 Docker 中找不到 MySQL 的 mysql_config [重复]