【问题标题】:Why won't Docker load Tidy?为什么 Docker 不加载 Tidy?
【发布时间】:2020-01-31 15:09:22
【问题描述】:

我正在尝试使用 phpdocx 在 laravel api 应用程序中从 HTML 创建一个 docx 文件。

为了使用这个转换工具,必须安装Tidy

我已经像这样在 dockerfile 中包含了 tidy

FROM php:7.2-fpm-stretch

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
     libicu-dev \
    openssh-client\
    git \
     curl \
     libmemcached-dev \
     libz-dev \
     libpq-dev \
     libjpeg-dev \
     libpng-dev \
     tidy \
     libfreetype6-dev \
     libssl-dev \
     libmcrypt-dev \
     gnupg \
     && rm -rf /var/lib/apt/lists/*

但是当我在代码中添加 phpinfo(); 时,找不到 tidy。

奇怪的是,当我访问docker的bash时,我可以tidy -v得到HTML Tidy for Linux version 5.2.0

我在与项目相关的所有 php.ini 文件中取消了 extension=php_tidy.dll 的注释,并多次重建了图像。

当我运行 phpdocx 中包含的 check.php 时,我可以在结果 Warning You must install Tidy for PHP if you want to use embedHTML in your Word documents. 中找到这个错误

我试过docker pull imega/tidy 无济于事。

我已经坚持了一天多,如果有人知道我哪里出错了,我将不胜感激。

root@c790d433727a:/var/www/vendor/phpdocx# php check.php

OK PHP version is 7.2.22
OK Zip support is enabled.
OK DOM support is enabled.
OK XML support is enabled.
Warning You must install Tidy for PHP if you want to use embedHTML in your Word documents.
OK mbstring is enabled.

root@c790d433727a:/var/www/vendor/phpdocx# tidy -v

HTML Tidy for Linux version 5.2.0

【问题讨论】:

    标签: php laravel docker tidy phpdocx


    【解决方案1】:

    几天前我遇到了同样的问题,问题不仅是 tidy 库本身,而且错过了其他 tidy 依赖 libtidy-dev,这非常适合安装和加载 tidy:

    # Install system dependencies
    RUN apt-get update && apt-get install -y \
            nano \
            libxml2-dev \
            libzip-dev \
            libfreetype6-dev \
            libjpeg62-turbo-dev \
            libpng-dev \
            libmagickwand-dev \
            **libtidy-dev** \
            git \
            curl \
            zip \
            ssh\
            wget\
        && docker-php-ext-configure gd --with-freetype --with-jpeg \
        && docker-php-ext-install \
            exif \
            gd \
            soap \
            zip
    
    RUN docker-php-ext-install tidy \
        && docker-php-ext-enable tidy
    

    【讨论】:

      【解决方案2】:

      查看示例 Docker 文件:

      FROM php:7.2-fpm-stretch
      RUN apt-get -y update && apt-get -y upgrade
      RUN apt-get install -y libtidy-dev 
      RUN docker-php-ext-install -j$(nproc) tidy
      

      如果你这样构建它:

      docker build --tag stackoverflow .
      

      并以这种方式运行:

      docker run --rm -it --entrypoint="" stackoverflow /bin/sh
      

      您将登录到 CLI 并可以通过这种方式检查已安装的扩展:

      php -m
      

      给出列表:

      [PHP Modules]
      Core
      ctype
      curl
      date
      dom
      fileinfo
      filter
      ftp
      hash
      iconv
      json
      libxml
      mbstring
      mysqlnd
      openssl
      pcre
      PDO
      pdo_sqlite
      Phar
      posix
      readline
      Reflection
      session
      SimpleXML
      sodium
      SPL
      sqlite3
      standard
      tidy
      tokenizer
      xml
      xmlreader
      xmlwriter
      zlib
      
      [Zend Modules]
      

      与:

      tidy
      

      下:

      [PHP Modules]
      

      玩得开心:)

      【讨论】:

        猜你喜欢
        • 2014-03-27
        • 1970-01-01
        • 1970-01-01
        • 2014-10-03
        • 2021-07-07
        • 2017-01-27
        • 2019-12-24
        • 1970-01-01
        • 2014-05-14
        相关资源
        最近更新 更多