Docker为什么不加载Tidy?

时间:2019-10-02 10:34:52

标签: php laravel docker tidy phpdocx

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

要使用此转换工具,必须安装Tidy

我已经像这样将整洁地包含在dockerfile中

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();时,找不到整洁的地方。

奇怪的是,当我访问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

1 个答案:

答案 0 :(得分:0)

查看示例Docker文件:

public partial class ObjectMove : Form
{
    public ObjectMove() => InitializeComponent();

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        DrawRectangleRectangle(e);
    }

    private void DrawRectangleRectangle(PaintEventArgs e)
    {
        Pen blackPen = new Pen(Color.Black, 3);
        Rectangle rect = new Rectangle(0, 0, 200, 200);
        e.Graphics.DrawRectangle(blackPen, rect);
    }
}

如果您以这种方式构建它:

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 .

您将登录到CLI,并可以通过以下方式检查已安装的扩展程序:

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

给出列表:

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

玩得开心:)