Php не может найти аккуратный

Я использую php7 в docker container для запуска службы на основе библиотеки phpdocx. Для работы необходимо установить и активировать tidy и некоторые другие расширения. Я установил php-tidy, но получаю следующее предупреждение.

PHP Warning: PHP Startup: Unable to load dynamic library 'tidy' (tried: /usr/lib/php7/modules/tidy (Error loading shared library /usr/lib/php7/modules/tidy: No such file or directory), /usr/lib/php7/modules/tidy.so (Error relocating /usr/lib/php7/modules/tidy.so: _zval_ptr_dtor: symbol not found)) in Unknown on line 0

Докерфайл

FROM php:7.3.2-cli-alpine3.9
USER root


COPY . code
WORKDIR code


RUN apk update && apk add php-tidy && apk add php-zip &&  apk add php-curl && apk add php-sodium

# RUN sed -i s/;extension=tidy/extension=tidy/ -f /usr/local/etc/php/php.ini-development
# RUN sed -i s/;extension=tidy/extension=tidy/ -f /usr/local/etc/php/php.ini-production

COPY php.ini /usr/local/etc/php/php.ini-development
COPY php.ini /usr/local/etc/php/php.ini-production

COPY php.ini /usr/local/etc/php/php.ini


CMD php -S 0.0.0.0:8080

Вывод из оболочки докера

при запуске phpinfo()

Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /usr/local/etc/php
Loaded Configuration File => /usr/local/etc/php/php.ini
Scan this dir for additional .ini files => /usr/local/etc/php/conf.d
Additional .ini files parsed => /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
# vi /usr/local/etc/php/php.ini

extension=tidy 

[Tidy]                                                                     
; The path to a default tidy configuration file to use when using tidy         
; http://php.net/tidy.default-config                                            
;tidy.default_config = /usr/local/lib/php/default.tcfg                         

; Should tidy clean and repair output automatically?                            
; WARNING: Do not use this option if you are generating non-html content       
; such as dynamic images                                                       
; http://php.net/tidy.clean-output                                             
tidy.clean_output = Off   



; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
extension_dir = "/usr/lib/php7/modules/"
; On windows:
;extension_dir = "ext"

#ls /usr/lib/php7/modules/
curl.so    sodium.so  tidy.so    zip.so

Вы проверили, есть ли пакет с именем php7.3-tidy? Возможно, это вводящая в заблуждение ошибка из-за несоответствия версии. Просто мысль.

Andrew Larsen 22.02.2019 10:34

Есть упаковка php7-tidy. Я установил это, но это тоже не помогло.

Singh Lalit 22.02.2019 10:45

Вы имеете в виду php7.3-tidy или все еще тестируете php7-tidy ? Вы установили libtidy? sudo apt install libtidy-dev libtidy5 (ссылка: php.net/manual/en/tidy.installation.php)

Andrew Larsen 22.02.2019 10:51

Можете ли вы найти каждый файл tidy.so на вашем компьютере, чтобы убедиться, что путь правильный? sudo find / -name tidy.so

Andrei Lupuleasa 22.02.2019 15:43
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
4
2 342
2

Ответы 2

Существуют команды docker для установки библиотек php. Поэтому вместо использования команды linux, например: apk add php-tidy использование docker-php-ext-install tidy решило мою проблему. Ниже приведен файл докера, который работает.

FROM php:7


ENV DEBIAN_FRONTEND noninteractive

USER root
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y apt-utils
RUN apt-get install -y libzip-dev
RUN apt-get install -y libtidy-dev
RUN apt-get install -y curl
RUN apt-get install -y libcurl3
RUN apt-get install -y libcurl3-dev
RUN docker-php-ext-install zip
RUN docker-php-ext-install curl
RUN docker-php-ext-install tidy
RUN docker-php-ext-enable zip
RUN docker-php-ext-enable curl
RUN docker-php-ext-enable tidy

COPY . code
WORKDIR code

EXPOSE 8080
CMD php -S 0.0.0.0:8080

В Dockerfile на основе Debian Bullseye:

RUN apt-get update && \
    apt-get install -y libtidy-dev && \
    rm -rf /var/lib/apt/lists/* && \
    docker-php-ext-install tidy && \
    docker-php-ext-enable tidy

Другие вопросы по теме