Azure Служба приложений Linux PHP - Как добавить "--with-freetype-dir = / usr / lib / x86_64- linux -gnu" в "./configure"? - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь установить Magento на Azure Linux Службу приложений (PHP 7.3- apache), и я столкнулся с этой ошибкой :

Image CAPTCHA requires FT fonts support

Очевидно, что libfreetype6-dev, несмотря на то, что он установлен в базовом контейнере (на /usr/lib/x86_64-linux-gnu), не загружается PHP.

По сути, решение, предлагаемое другим ответом StackOverflow, заключается в переконфигурировании и перекомпиляции PHP. Для перенастройки необходимо выполнить команду ./configure с флагом --with-freetype-dir=/usr/lib/x86_64-linux-gnu.

Согласно info.php, скорее всего, мне нужно будет выполнить правильные команды:

./configure 
--build=x86_64-linux-gnu  \
--with-config-file-path=/usr/local/etc/php  \
--with-config-file-scan-dir=/usr/local/etc/php/conf.d  \
--enable-option-checking=fatal  \
--with-mhash  \
--enable-ftp  \
--enable-mbstring  \
--enable-mysqlnd  \
--with-password-argon2  \
--with-sodium=shared  \
--with-pdo-sqlite=/usr  \
--with-sqlite3=/usr  \
--with-curl  \
--with-libedit  \
--with-openssl  \
--with-config-file-scan-dir=/usr/local/etc/php/conf.d  \
--with-zlib  \
--with-libdir=lib/x86_64-linux-gnu  \
--with-apxs2  \
--with-freetype-dir=/usr/lib/x86_64-linux-gnu \
--disable-cgi build_alias=x86_64-linux-gnu 

make && make install
service apache2 reload

К сожалению, я не уверен, как это сделать в контейнере. Я нашел блог , в котором предлагается использовать для этого инструменты docker. Но все, что я вижу, это как обновить расширение gd, которое не работает в моем случае:

docker-php-ext-configure gd –with-freetype-dir=/usr/lib/x86_64-linux-gnu”

Также в контейнере есть следующие команды, которые, вероятно, могут помочь:

docker-php-entrypoint     docker-php-ext-enable     docker-php-source
docker-php-ext-configure  docker-php-ext-install

Любые подсказки о том, как сделать sh это?

1 Ответ

0 голосов
/ 30 марта 2020

Я понял это благодаря Toan Nguyen post .

Вам не нужно перекомпилировать php.

Достаточно добавить libfreetype в вашу конфигурацию GD. Что было неочевидным, так это тот факт, что, поскольку контейнер сохраняется только /home, вам необходимо создать настройку приложения на портале, чтобы переопределить все предыдущие настройки PHP INI.

Вот шаги, которые необходимо выполнить в веб-интерфейсе S SH. Портал Azure имеет:

  1. Создайте две папки в каталоге /home для Сохраните расширение и настроенные файлы php INI:

    mkdir /home/site/ext /home/site/ini
    
  2. Запустите команду docker, чтобы изменить конфигурацию расширения GD с помощью freetype (занимает некоторое время):

    docker-php-ext-configure gd --with-freetype-dir=/usr/lib/x86_64-linux-gnu && docker-php-ext-install -j$(nproc) gd
    

    Возвращает место, где был создан ваш ext, что-то вроде этого:

    Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20180731/
    
  3. Скопируйте сгенерированное расширение в эту папку:

    cp /usr/local/lib/php/extensions/no-debug-non-zts-20180731/gd.so /home/site/ext
    
  4. Переместите все файлы INI в новую папку INI. Удалите старую ссылку на GD и добавьте новую:

    cp /usr/local/etc/php/conf.d/* /home/site/ini
    rm -rf docker-php-ext-gd.ini
    echo “extension=/home/site/ext/gd.so” » extensions.ini
    
  5. Наконец, обновите настройку приложения в Azure Portal, чтобы включить новую папку INI. Добавьте приложение с именем: PHP_INI_SCAN_DIR и значением /home/site/ini (это переопределит все предыдущие файлы INI). enter image description here

  6. Это перезапустит ваше приложение. Вы можете использовать phpInfo(), чтобы подтвердить, что расширение GD теперь имеет свободный тип. enter image description here

Примечание. Если вы хотите сбросить конфигурацию, вы можете просто удалить значение PHP_INI_SCAN_DIR в настройках приложения, которое перезапустит контейнер с конфигурацией по умолчанию. Кроме того, вы можете удалить ext и ini со своего домашнего сайта для очистки, но они все равно не будут загружены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...