You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Digital Ocean Functions的PHP函数中添加Ghostscript等二进制依赖?

在DigitalOcean Functions中添加系统级二进制依赖(以Ghostscript为例)

可行方案说明

DigitalOcean Functions没有AWS Lambda Layers那样的原生依赖层机制,但可以通过自定义构建脚本,将系统级二进制文件打包到函数部署包中,实现运行时调用。下面是针对PHP函数+Ghostscript的具体实现步骤:


  1. 准备适配环境的Ghostscript二进制
    DigitalOcean Functions的运行环境基于Debian x86_64,优先选择静态编译的Ghostscript二进制文件(无需依赖系统库),可以从官方发布渠道下载对应版本的Linux x86_64静态压缩包。

  2. 修改lib/build.sh构建脚本
    在原有PHP依赖安装步骤之外,添加下载、解压并配置二进制的逻辑:

    #!/bin/bash
    set -e
    
    # 安装PHP依赖(保留原有逻辑)
    composer install --no-dev --optimize-autoloader
    
    # 下载Ghostscript静态二进制包
    GS_VERSION="9.56.1"
    GS_ARCHIVE="ghostscript-${GS_VERSION}-linux-x86_64.tar.gz"
    wget https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs${GS_VERSION//./}/$GS_ARCHIVE
    
    # 解压到当前函数目录(移除多余层级)
    tar -xzf $GS_ARCHIVE --strip-components=1 -C .
    
    # 清理压缩包并赋予执行权限
    rm $GS_ARCHIVE
    chmod +x ./gs
    
  3. 在PHP函数中调用二进制文件
    函数代码中直接引用部署包内的gs二进制路径,示例如下:

    <?php
    function main(array $args): array {
        // 获取Ghostscript二进制的绝对路径
        $gsBinary = __DIR__ . '/gs';
        
        // 测试调用:获取版本信息
        $version = shell_exec("$gsBinary --version");
        
        return [
            'statusCode' => 200,
            'body' => "Ghostscript 版本: " . trim($version)
        ];
    }
    
  4. 部署并验证
    使用doctl serverless deploy命令部署函数,调用后查看返回结果,确认Ghostscript正常运行。


关键注意事项

  • 必须使用静态编译的二进制,避免运行环境缺少依赖库导致执行失败。
  • 控制部署包大小,DigitalOcean Functions单函数包上限为250MB,尽量选择精简版本的二进制文件。
  • 若需要多个系统依赖,可在build.sh中依次处理,统一打包到部署包内。

内容的提问来源于stack exchange,提问作者Arnaud Songa-Côte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 19:15:04