如何在 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 设置运行配置?

如何在 Ruby 中为 splat 参数设置默认值

如何在其他标签 <label> 或 <p> 或 <a> 中为输入标签的 id 添加检查类

如何在 Jenkins 中为 sonarqube 配置 TSLint 插件?

如何在 cmock 中为“读取”功能配置期望

如何在 Visual Studio 2013 中为 sqlite 配置实体框架 6