如何在 scrutinizer-ci 配置中为 php7.4 安装 ext-gd?
Posted
技术标签:
【中文标题】如何在 scrutinizer-ci 配置中为 php7.4 安装 ext-gd?【英文标题】:How to install ext-gd for php7.4 at scrutinizer-ci config? 【发布时间】:2020-05-06 20:50:31 【问题描述】:一段时间后,Scrutinizer 在尝试分析 Sylius 插件代码时开始永久失败,并出现下一个错误:
- sylius/sylius v1.7.3 requires ext-gd * -> the requested php extension gd is missing from your system.
- sylius/sylius v1.7.2 requires ext-gd * -> the requested PHP extension gd is missing from your system.
- sylius/sylius v1.7.1 requires ext-gd * -> the requested PHP extension gd is missing from your system.
- sylius/sylius v1.7.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.
示例:https://scrutinizer-ci.com/g/Setono/SyliusPronavicPlugin/inspections/c6ead08f-5fad-405e-b557-9d0adf987c0c
它找不到任何 php7.4-gd
/ php7.0-gd
/ php-gd
软件包(我已经尝试了所有变体,因为不知道那里使用的是哪个 Ubuntu),如果我尝试指定编译器,它也会失败选项compile_options: '--enable-gd'
(因为它看起来像重写了一些默认选项,这些选项在文档中没有指定,但审查程序成功运行是必需的,请参阅https://scrutinizer-ci.com/g/Setono/SyliusPronavicPlugin/inspections/e198ca2c-125d-4d57-b8ef-2314a62c5ecc)。
有人知道如何配置 Scrutinizer 来为 php7.4 安装 ext-gd? 官方文档没有提供信息:(
UPD:看起来 Scrutinizer 在旧的 Ubuntu 14.04 (Scrutinizer old Ubuntu 14.04) 下工作,并且没有 php7.4 包存在(谷歌搜索 installing php7.4-gd at ubuntu 14.04
不会给你正确的结果,所以使用 ext-gd
的唯一方法php7.4
提供编译选项。
UPD2:请参阅下面 Sam Dark 的回答
谢谢
【问题讨论】:
【参考方案1】:您需要在编译选项中指定 GD 标志:
environment:
php:
version: 7.4.14
compile_options: '--with-config-file-path=/home/scrutinizer/.phpenv/versions/7.4.14/etc --with-config-file-scan-dir=/home/scrutinizer/.phpenv/versions/7.4.14/etc/conf.d --prefix=/home/scrutinizer/.phpenv/versions/7.4.14 --libexecdir=/home/scrutinizer/.phpenv/versions/7.4.14/libexec --enable-intl --with-openssl --enable-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-freetype-dir=/usr --enable-exif --with-libzip --with-zlib --with-zlib-dir=/usr --with-sodium --with-pdo-sqlite --enable-soap --enable-xmlreader --with-xsl --enable-ftp --with-tidy --with-xmlrpc --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-shmop --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-pcntl --with-readline --enable-mbstring --with-curl --with-pgsql --with-pdo-pgsql --with-gettext --enable-sockets --with-bz2 --enable-bcmath --enable-calendar --with-libdir=lib --enable-fpm --enable-maintainer-zts --with-gmp --with-kerberos --with-imap --with-imap-ssl --with-apxs2=/usr/bin/apxs --with-ldap --with-pear=/home/scrutinizer/.phpenv/versions/7.4.14/pear' compile_options: '--with-config-file-path=/home/scrutinizer/.phpenv/versions/7.4.14/etc --with-config-file-scan-dir=/home/scrutinizer/.phpenv/versions/7.4.14/etc/conf.d --prefix=/home/scrutinizer/.phpenv/versions/7.4.14 --libexecdir=/home/scrutinizer/.phpenv/versions/7.4.14/libexec --enable-intl --with-openssl --with-gd --enable-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-freetype-dir=/usr --enable-exif --with-libzip --with-zlib --with-zlib-dir=/usr --with-sodium --with-pdo-sqlite --enable-soap --enable-xmlreader --with-xsl --enable-ftp --with-tidy --with-xmlrpc --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-shmop --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-pcntl --with-readline --enable-mbstring --with-curl --with-pgsql --with-pdo-pgsql --with-gettext --enable-sockets --with-bz2 --enable-bcmath --enable-calendar --with-libdir=lib --enable-fpm --enable-maintainer-zts --with-gmp --with-kerberos --with-imap --with-imap-ssl --with-apxs2=/usr/bin/apxs --with-ldap --with-pear=/home/scrutinizer/.phpenv/versions/7.4.14/pear'
【讨论】:
【参考方案2】:你需要添加ondrej/php仓库,更新包列表,然后安装php7.4-gd
:
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt-get install php7.4-gd
【讨论】:
感谢您的回答,但ppa:ondrej/php
仅提供适用于 Ubuntu 16+ 的软件包,不支持 Ubuntu 14.04
@igor_mukhin 那么 14.04 的解决方案是什么?
@shamaseen,UPD 部分的解决方案只是理论上的,实际上 - 如果您只提供单个选项,编译会失败。我还没有找到解决方案,因为这花费了太多时间 - 我们考虑暂时从我们的 CI 工作流程中删除 Scrutinizer。
@igor_mukhin 哦,我想知道是否有人有解决方案或如何在 Scrutinizer 中升级到 ubuntu 18.04,现在已经 2 天寻找解决方案,但没有一个真正起作用。我想我会忽略 Scrutinizer,可能会转向 Travis 或其他什么。以上是关于如何在 scrutinizer-ci 配置中为 php7.4 安装 ext-gd?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 IntelliJ IDEA 中为 Ktor 设置运行配置?
如何在其他标签 <label> 或 <p> 或 <a> 中为输入标签的 id 添加检查类