【问题标题】:docker unable to locate package trying to install php extension mysqlidocker无法找到试图安装php扩展mysqli的包
【发布时间】:2017-12-30 10:30:53
【问题描述】:

我正在使用 [typo3-docker-boilerplate][1]

https://github.com/webdevops/TYPO3-docker-boilerplate

并尝试安装我需要的扩展 (mysqli)

我尝试了在这里和互联网上找到的不同方法,但我总是遇到以下错误消息:

E: 找不到包 mysqli

我将此添加到 dockerfile 中:

RUN apt-get update && apt-get install -y \
    mysqli \
    && docker-php-ext-install mysqli

RUN ln -sf /opt/docker/etc/cron/crontab /etc/cron.d/docker-boilerplate \
    && chmod 0644 /opt/docker/etc/cron/crontab \
    && echo >> /opt/docker/etc/cron/crontab \
    && ln -sf /opt/docker/etc/php/development.ini /opt/docker/etc/php/php.ini

虽然试过了,这里写的是关于安装php扩展的,当然没有成功:

https://hub.docker.com/_/php/

有一个 development.ini,将被包含在内,其中包含 php 指令,如:

post_max_size       = 50M
upload_max_filesize = 50M
max_input_vars      = 5001

虽然我尝试将其写入文件

extension = php_mysqli.dll

码头文件

FROM webdevops/php-apache-dev:ubuntu-16.04

ENV PROVISION_CONTEXT "development"

# Deploy scripts/configurations
COPY etc/             /opt/docker/etc/

RUN ln -sf /opt/docker/etc/cron/crontab /etc/cron.d/docker-boilerplate \
    && chmod 0644 /opt/docker/etc/cron/crontab \
    && echo >> /opt/docker/etc/cron/crontab \
    && ln -sf /opt/docker/etc/php/development.ini /opt/docker/etc/php/php.ini

RUN apt-get install -y \
    && docker-php-ext-install php-mysqli

#RUN apt-get update && \
#    apt-get install -y mysqli && \
#    docker-php-ext-install mysqli && \
#    docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/  &&  \
#    docker-php-ext-install gd

#RUN apt-get -qq update \
#    && apt-get -qq -y install curl \
#        php-mysqli \
#    && apt-get clean -y \
#    && docker-php-ext-install php-mysqli

# Configure volume/workdir
WORKDIR /app/

非常感谢您的任何帮助或建议。 谢谢

【问题讨论】:

  • 我根本不做 apt-get,只是 docker-php-ext-install 行。
  • 你为什么要安装 apt-package mysqli?它不存在。如果你跳过它或将包名替换为php-mysqli,会发生什么?
  • 我尝试这种方法,因为这些是我找到的关于安装 php 扩展的示例。如果我尝试这个,我会收到以下错误消息: RUN apt-get install -y \ && docker-php-ext-install php-mysqli /bin/sh: 1: docker-php-ext-install: not found

标签: php docker mysqli docker-compose dockerfile


【解决方案1】:

mysqliphp-src 的一部分。如果您使用 PHP docker 映像,php-src 中包含的任何扩展都不需要任何额外的包。你只需要使用

docker-php-ext-install mysqli

@编辑 一些扩展需要额外的包(例如 iconv),无论如何 mysqli 不需要。

【讨论】:

  • 感谢您的提示,请问如何执行此命令?因为这让我出错: RUN docker-php-ext-install mysqli /bin/sh: 1: docker-php-ext-install: not found
  • @ToTe 你用哪个图片作为基础。
  • 我不知道能否给你一个好的答案。我对码头工人很陌生。 :) 如果我输入 docker-compose up-d 则有 3 个容器 app_1、mysql_1、mail_1
  • @ToTe 在您的问题中包含您的 wjhole Dockerfile 内容。
【解决方案2】:

试试这个

apt-get 安装 php-mysql

完成后在下面的文件中启用 mysql 扩展

/etc/php/7.0/apache2/php.ini

取消注释下面的行

extension=php_mysqli.so

【讨论】:

  • 感谢您的建议。我编辑了我的帖子,以提供更多详细信息。
猜你喜欢
  • 2017-05-20
  • 2021-12-27
  • 2020-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
  • 2016-04-29
  • 1970-01-01
相关资源
最近更新 更多