- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Azure Linux 应用服务 (PHP 7.3-apache) 上安装 Magento,但遇到了这个 error :
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
不幸的是,我不确定如何在容器内执行此操作。我找到了blog这表明我应该使用 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
关于如何实现这一目标有任何线索吗?
最佳答案
感谢Toan Nguyen post,我已经弄清楚了.
您不需要重新编译 php。
将libfreetype
添加到您的GD配置中就足够了。不明显的是,由于容器仅保留 /home
,因此您需要在门户中创建一个应用程序设置来覆盖所有以前的 PHP INI 配置。
以下是在 Azure 门户的 SSH Web 界面中运行所需的步骤:
在 /home
目录中创建两个文件夹来保存扩展和自定义的 php INI 文件:
mkdir /home/site/ext /home/site/ini
运行 docker 命令以使用 freetype 重新配置 GD 扩展(需要一些时间):
docker-php-ext-configure gd --with-freetype-dir=/usr/lib/x86_64-linux-gnu && docker-php-ext-install -j$(nproc) gd
它将返回生成您的分机的位置,如下所示:
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20180731/
将生成的扩展复制到此文件夹:
cp /usr/local/lib/php/extensions/no-debug-non-zts-20180731/gd.so /home/site/ext
将所有 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
最后,更新 Azure 门户中的应用设置以包含新的 INI 文件夹。添加名称为 PHP_INI_SCAN_DIR
和值 /home/site/ini
的应用程序设置(这将覆盖以前的所有 INI 文件)。
注意:如果您想重置配置,只需从应用程序设置中删除 PHP_INI_SCAN_DIR
值即可,这将使用默认配置重新启动容器。此外,您还可以从主站点删除 ext
和 ini
进行清理,但它们无论如何都不会被加载。
关于linux - Azure 应用服务 Linux PHP - 如何将 "--with-freetype-dir=/usr/lib/x86_64-linux-gnu"添加到 "./configure"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60918752/
我是一名优秀的程序员,十分优秀!